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

相关文章
|
1月前
|
算法 机器人
基于SOA海鸥优化算法的PID控制器最优控制参数计算matlab仿真
本课题研究基于海鸥优化算法(SOA)优化PID控制器参数的方法,通过MATLAB仿真对比传统PID控制效果。利用SOA算法优化PID的kp、ki、kd参数,以积分绝对误差(IAE)为适应度函数,提升系统响应速度与稳定性。仿真结果表明,SOA优化的PID控制器在阶跃响应和误差控制方面均优于传统方法,具有更快的收敛速度和更强的全局寻优能力,适用于复杂系统的参数整定。
|
1月前
|
算法 Python
粒子群算法对pi控制器进行参数优化,随时优化pi参数以控制直流无刷电机转速(Simulink仿真实现)
粒子群算法对pi控制器进行参数优化,随时优化pi参数以控制直流无刷电机转速(Simulink仿真实现)
|
3月前
|
算法 数据可视化 数据挖掘
基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
本内容展示了基于EM算法的高斯混合模型(GMM)聚类实现,包含完整Python代码、运行效果图及理论解析。程序使用三维数据进行演示,涵盖误差计算、模型参数更新、结果可视化等关键步骤,并附有详细注释与操作视频,适合学习EM算法与GMM模型的原理及应用。
|
8月前
|
存储 人工智能 Java
一文轻松拿捏C语言的指针的基础使用
本文介绍了C语言中的指针概念,包括直接访问和间接访问内存的方式、指针变量的定义与使用、取址运算符`&`和取值运算符`*`的应用,帮助读者深入理解指针这一C语言的核心概念。君志所向,一往无前!
151 0
|
10月前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
251 31
|
10月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
320 7
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
10月前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
657 15
|
10月前
|
存储 编译器 C语言
【C语言】指针大小知多少 ?一场探寻C语言深处的冒险 !
在C语言中,指针的大小(即指针变量占用的内存大小)是由计算机的体系结构(例如32位还是64位)和编译器决定的。
1197 9
|
10月前
|
算法
基于大爆炸优化算法的PID控制器参数寻优matlab仿真
本研究基于大爆炸优化算法对PID控制器参数进行寻优,并通过Matlab仿真对比优化前后PID控制效果。使用MATLAB2022a实现核心程序,展示了算法迭代过程及最优PID参数的求解。大爆炸优化算法通过模拟宇宙大爆炸和大收缩过程,在搜索空间中迭代寻找全局最优解,特别适用于PID参数优化,提升控制系统性能。
|
10月前
|
安全 程序员 C语言
【C语言】指针的爱恨纠葛:常量指针vs指向常量的指针
在C语言中,“常量指针”和“指向常量的指针”是两个重要的指针概念。它们在控制指针的行为和数据的可修改性方面发挥着关键作用。理解这两个概念有助于编写更安全、有效的代码。本文将深入探讨这两个概念,包括定义、语法、实际应用、复杂示例、最佳实践以及常见问题。
306 7

热门文章

最新文章