- 97
- 0
- 约2.01千字
- 约 3页
- 2017-06-30 发布于河南
- 举报
百钱买百鸡的三种做法 C语言
问题概述一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:1) x的取值范围为1~202) y的取值范围为1~333) z的取值范围为3~99,步长为3对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。当然也可以简化算法去完成这个问题。数据要求问题中的常量:无问题的输入:无问题的输出:int x,y,z /*公鸡、母鸡、小鸡的只数*/三重循环做法(穷举法)#include stdio.h#include stdlib.h//由于笔者用的devc++编程,所以需要加system(pause);语句暂停程序int main(){inta,b,c; //a,b,c分别为公鸡母鸡还有小鸡的数量(均得到大致范围)printf(本程序用来解决百钱买百鸡的问题。\n);system(pause);for(a=0;a=15;a++)for(b=0;b=25;b++)for(c=66;c=100;c+=3) if(a+b+c==1005*a+3*b+c/3==100) //判断条件printf(分配:公鸡%d只,母鸡%d只,雏鸡%d只,为百钱买百鸡的答案。\n,a,b,c);system(pause);return 0;}//程序中的算法自己已经通过不买公鸡or母鸡的方法求得大约界限,缩小了循环的范围。 //程序错误:原来通过二元二次方程得到 for(c=66;c=75;c+=3),但那个是为了检测a和b的最大值,而不能用来恒定c。应该用c和最小的b去恒定- -//范围能缩小就缩小,但是要准确和肯定。- -二重循环做法(简化法)#include stdio.h#include stdlib.hint main(){inta,b,c; //a,b,c分别为公鸡母鸡还有小鸡的数量(均得到大致范围)printf(本程序用来解决百钱买百鸡的问题。\n);system(pause);for(a=0;a=15;a++)for(c=0;c=100;c+=3){b=100-a-c;if(5*a+3*b+c/3==100) //判断条件printf(分配:公鸡%d只,母鸡%d只,雏鸡%d只,为百钱买百鸡的答案。\n,a,b,c);}system(pause);return 0;}//将c作为二次循环条件而不是b,这样可以避免很多次c不是3的倍数的情况//b=100-a-c,从而判断条件中也不需要这一个条件了,只需要判定它们的价格是否为100即可一重循环做法(好方法- -)#include stdio.h#include stdlib.hint main(){inta,b,c,num,mon,i;//a,b分别为公鸡母鸡数量,c为雏鸡数量除以3printf(本程序用来解决百钱买百鸡的问题。\n);system(pause);for(c=0;c=33;c++) {num=100-3*c;mon=100-c; if((mon-3*num)%2==0) { a=(mon-3*num)/2;if(a0||a15) continue; b=num-a;if(b0||b25) continue; //通过两个条件分别判断a和b的值是否在指定区间(否则会产生负值和很大的值)printf(分配:公鸡%d只,母鸡%d只,雏鸡%d只,为百钱买百鸡的答案。\n,a,b,3*c); } } system(PAUSE);return 0; }其中一些数值为简要的缩减范围。。至于mon-3*num)%2==0则是通过一元二次方程得出,还是提前做了一些计算的。就相当于优化算法了。当然,这个问题还有很多种做法,希望一样热爱C语言的加油~由于本人只是初学两个月,多有浅薄的认识和不足,望见谅。
您可能关注的文档
- 泰康祥相伴条款.pdf
- 泰康卓越财富B 款终身寿险(万能型)2.pdf
- 泰康附加e 爱家豁免保险费重大疾病保险条款阅读指引.pdf
- 泰康财富人生B款终身年金保险(分红型)35.pdf
- 泸州医学院2005-2006学年度第一学期期末考试A.pdf
- 流 式 细 胞 仪 补 偿 设 置.pdf
- 津巴布韦元如何成为人类货币史上的耻辱.doc
- 浅析代建制项目风险识别的方法及原则.docx
- 泰康附加如意宝意外伤害医疗保险条款0623.doc
- 浅谈设备进口中的合同谈判和执行.pdf
- 《GB/T 46962-2026印刷技术 安全印刷过程管理》.pdf
- 中国国家标准 GB/T 46962-2026印刷技术 安全印刷过程管理.pdf
- GB/T 46962-2026印刷技术 安全印刷过程管理.pdf
- 中国国家标准 GB/T 32580.5-2026轨道交通 地面装置 高压交流开关设备及互感器 第5部分:27.5 kV和2×27.5 kV金属封闭开关设备和控制设备.pdf
- 《GB/T 32580.5-2026轨道交通 地面装置 高压交流开关设备及互感器 第5部分:27.5 kV和2×27.5 kV金属封闭开关设备和控制设备》.pdf
- GB/T 33248-2026印刷技术 胶印橡皮布.pdf
- GB/T 18282.6-2026医疗产品灭菌 化学指示物 第6部分:用于小型蒸汽灭菌器性能测试的二类指示物和过程挑战装置.pdf
- 中国国家标准 GB/T 18282.6-2026医疗产品灭菌 化学指示物 第6部分:用于小型蒸汽灭菌器性能测试的二类指示物和过程挑战装置.pdf
- 中国国家标准 GB/T 31308.1-2026行政、商业和行业中的数据元、过程和文档 长效签名 第1部分:CMS高级电子签名(CAdES)规范.pdf
- GB/T 31308.1-2026行政、商业和行业中的数据元、过程和文档 长效签名 第1部分:CMS高级电子签名(CAdES)规范.pdf
原创力文档

文档评论(0)