博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一重循环解决百鸡百钱问题
阅读量:7100 次
发布时间:2019-06-28

本文共 1224 字,大约阅读时间需要 4 分钟。

课本P61页介绍了穷举法,并结合案例3.7解决了百鸡百钱问题.

题目:公鸡5钱1只;母鸡3钱1只;雏鸡1钱3只.百钱买百鸡,求各几只.

书上给出了一种简化算法:

设chick = 100 - hen - rooster 代替判定条件 rooster + hen + chick = 100,

因此只需二重循环即可解决问题.

而这个问题,经过思考之后,可以由一重循环求解.

 

#include 
#include
int main(){ int rooster, hen, chick; int count; count = 0; //设公鸡r只,母鸡h只,雏鸡c只 //由计算可得,r = (4 * c - 300) / 3 //但是必须使等式有意义,即r>=0,即可求解出r的范围:c>=75 //此外,因为1钱可买3雏鸡,雏鸡的数量c必须是3的整数倍* //经检验,75是>=75且能被三整除的最小整数 //由*可知,雏鸡增加的数量也必须为3的整数倍,所以变量c每次加3 for(chick = 75; chick <= 300; chick = chick + 3) //这条语句限定了chick的范围 75~300 { count++; if ((4 * chick - 300) % 3 == 0)//rooster表达式递增且大于0,但要保证为整数 { rooster = (4 * chick - 300) / 3; hen = (600 - 7 * chick) / 3;//这里无需检验hen是否为整数,因为hen=100-r-c,且前面保证了r,c为整数 if (hen >= 0)//因为hen的表达式递减,这条语句限定了hen的范围>0 printf("Rooster: %d, Hen: %d, Chick: %d\n", rooster, hen, chick); else break; } } printf("Total count: %d", count); return 0;}

输出如下:

Rooster: 0, Hen: 25, Chick: 75

Rooster: 4, Hen: 18, Chick: 78
Rooster: 8, Hen: 11, Chick: 81
Rooster: 12, Hen: 4, Chick: 84
Total count: 5

五次循环结束问题.

转载于:https://www.cnblogs.com/nester/p/9692496.html

你可能感兴趣的文章
WPF Button添加图片
查看>>
TabHost的两种实现形式
查看>>
Sharepoint学习笔记—Site Definition系列-- 2、创建Content Type
查看>>
半DDD架构 1
查看>>
数据库 收缩
查看>>
uva 10913 Walking on a Grid
查看>>
Swing中如何让一个TextField获得焦点
查看>>
最近常常干出一些骑着驴找驴的事来
查看>>
The Glowing Python: K- means clustering with scipy
查看>>
配置ORACLE 客户端连接到数据库
查看>>
Asp.Net Web API 2第十五课——Model Validation(模型验证)
查看>>
爬虫中的编码问题
查看>>
vim 操作
查看>>
sudo apt-get install lib32stdc++6
查看>>
03. 行列转换写法小结
查看>>
H2 database 行相加-行列转换
查看>>
ASP.NET状态管理详解,让你明明白白
查看>>
使用mysql触发器脚本,解决流水数据的添加。
查看>>
SIP and RTP Stack
查看>>
Activity间用Intent、Bundle、onActivityResult进行传值
查看>>