13【C语言 & 趣味算法】分糖果 问题。(数组名作为函数形参,亦即:形参数组名作 指针变量)

简介: 13【C语言 & 趣味算法】分糖果 问题。(数组名作为函数形参,亦即:形参数组名作 指针变量)

一、Review



12【c语言&趣味算法】存钱问题(四层for循环,if判断)

11【C语言&趣味算法】个人所得税问题(结构体应用)︰结构体的声明、定义结构体类型的三种方法等

10(可回看)【C语言&趣味算法】数制转换(常见,二进制、八进制、十进制、十六进制之间任意转换)

09【C语言&趣味算法】再识:折半查找(二分查找)︰基本思想、程序流程图及完整代码、附:顺序查找

08【C语言&趣味算法】再识:冒泡排序(问题分析、算法设计与分析、程序流程图以及完整代码)

07【C语言&趣味算法】最佳存款方案(采用从后往前递推解决)

06【c语言&趣味算法】牛顿迭代法求方程根(可回看)

05【C语言&趣味算法】经典:兔子产子问题(即:Fibonacci数列)

04【C语言&趣味算法】“抓交通肇事犯"问题。算法改进:设置"标识变量”,有效减少循环次数。03【C语言&趣味算法】(值得品味的一道题)打鱼还是晒网?结构体的简单应用。函数的应用。判断闰年的应用。求指定日期距1990年1月1日的天数。

02【C语言&趣味算法】借书方案问题:小明有5本新书,要借给A、B、C三位小朋友,若每人每次只能借1本,则可以有多少种不同的借法?

01【C语言&趣味算法】百钱百鸡问题(问题简单,非初学者请忽略叭)。请注意算法的设计(程序的框架),程序流程图的绘制,算法的优化。


二、New problem: Sharing sweets(分糖果)



2.1 Description of the problem

8ad47ddc421d4c729822134ee7cd0f17.jpg


2.2Analysis of the problem

7ae25e243a6148aa80825913a6a921d3.jpg


2.3 Algorithm design

ab4091bc620e4b4db8edc60dcf8ddbba.jpg


2.4 Defining the framework of the process(确定程序框架)

7d302f36ac8b49ef81992d9bbf71426d.jpgcfb0bca8515948abbead4ec5e3e36208.jpg


2.5 Full code and output


//code by xiexu 
//趣味13:分糖果 问题  
#include<stdio.h>
void print(int s[]);
int judge(int c[]);
int j=0;
int main()
{
  int sweet[10]={10,2,8,22,16,4,10,6,14,20}; /*初始化数组数据*/
  int i,t[10],l;
  printf("child  1   2   3   4   5   6   7   8   9  10\n");
  printf("………………………………………………………………\n");
  printf("time\n");
  print(sweet);         /*输出每个人手中糖的块数*/
  while(judge(sweet))       /*若不满足要求则继续进行循环*/
  { 
    for(i=0;i<10;i++)     /*将每个人手中的糖分成一半*/
      if(sweet[i]%2==0)   /*若为偶数则直接分出一半*/
        t[i]=sweet[i]=sweet[i]/2;
      else          /*若为奇数则加1后再分出一半*/
        t[i]=sweet[i]=(sweet[i]+1)/2;
    for(l=0;l<9;l++)      /*将分出的一半糖给右(后)边的孩子*/
      sweet[l+1]=sweet[l+1]+t[l];
    sweet[0]+=t[9];
    print(sweet);       /*输出当前每个孩子中手中的糖果数*/
  }
}
int judge(int c[])
{
  int i;
  for(i=0;i<10;i++)       /*判断每个孩子手中的糖果数是否相同*/
    if(c[0]!=c[i]) return 1;  /*不相同返回1*/
  return 0;
}
/*输出数组中每个元素的值*/
void print(int s[])         
{
int k;
printf(" %2d ",j++);
for(k=0;k<10;k++) printf("%4d",s[k]);
printf("\n");
} 


The outpot:

可以知道,经过17次分糖后,每个小朋友手中都会有18块糖果~

dbcd860b8e094731ab47ef6732b2b223.jpg


2.6 Question expansion(问题拓展)。值得学习!~

dc5b97c505194a63b4763edb16cbecf3.jpg

相关文章
|
2天前
|
存储 算法 容器
算法:双指针
算法:双指针
10 3
|
2天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
11 1
|
18天前
|
算法 前端开发 JavaScript
< 每日算法:一文带你认识 “ 双指针算法 ” >
`双指针`并非指的是一种具体的公式或者范式。而是一种运算思路,用于节省逻辑运算时间的`逻辑思路`!双指针算法通常用于`优化时间复杂度`!
< 每日算法:一文带你认识 “ 双指针算法 ” >
|
18天前
|
存储 C语言
指针数组作为main函数的形参
指针数组作为main函数的形参
13 0
|
24天前
|
机器学习/深度学习 算法
R语言非参数方法:使用核回归平滑估计和K-NN(K近邻算法)分类预测心脏病数据
R语言非参数方法:使用核回归平滑估计和K-NN(K近邻算法)分类预测心脏病数据
|
28天前
|
算法
优选算法|【双指针】|611.有效三角形的个数
优选算法|【双指针】|611.有效三角形的个数
|
28天前
|
算法
优选算法|【双指针】|202.快乐数
优选算法|【双指针】|202.快乐数
|
28天前
|
算法
优选算法|【双指针】283.移动零
优选算法|【双指针】283.移动零
|
28天前
|
算法
优选算法|【双指针】|1089.复写零
优选算法|【双指针】|1089.复写零
|
29天前
|
算法
【优选算法专栏】专题一:双指针--------1.移动0
【优选算法专栏】专题一:双指针--------1.移动0
19 0