捕鱼和分鱼
来源:互联网 发布:微信淘宝推广 编辑:程序博客网 时间:2024/04/29 02:08
A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。C、D、E依次醒来,也按同样的方法拿走鱼。问他们合伙至少捕了多少条鱼?
*问题分析与算法设计
根据题意,总计将所有的鱼进行了五次平均分配,每次分配时的策略是相同的,即扔掉一条鱼后剩下的鱼正好分成五份,然后拿走自己的一份,余下其它的四份。
假定鱼的总数为X,则X可以按照题目的要求进行五次分配:X-1后可被5整除,余下的鱼为4*(X-1)、5。若X满足上述要求,则X就是题目的解。
*程序说明与注释
#include
int main()
{
int n,i,x,flag=1; /*flag:控制标记*/
for(n=6;flag;n++){ /*采用试探的方法。令试探值n逐步加大*/
for(x=n,i=1&&flag;i<=5;i++)
if((x-1)%5==0) x=4*(x-1)/5;
else flag=0; /*若不能分配则置标记falg=0退出分配过程*/
if(flag) break; /*若分配过程正常结束则找到结果退出试探的过程*/
else flag=1; /*否则继续试探下一个数*/
}
printf("Total number of fish catched=%d/n",n); /*输出结果*/
}
*运行结果
Total number of fish catched = 3121
*问题的进一步讨论
程序采用试探法,试探的初值为6,每次试探的步长为1。这是过分保守的做法。可以在进一步分析题目的基础上修改此值,增大试探的步长值,以减少试探次数。
int main()
{
int n,i,x,flag=1; /*flag:控制标记*/
for(n=6;flag;n+=5){ /*采用试探的方法。令试探值n逐步加大*/
for(x=n,i=1&&flag;i<=5;i++)
if((x-1)%5==0) x=4*(x-1)/5;
else flag=0; /*若不能分配则置标记falg=0退出分配过程*/
if(flag) break; /*若分配过程正常结束则找到结果退出试探的过程*/
else flag=1; /*否则继续试探下一个数*/
}
printf("Total number of fish catched=%d/n",n); /*输出结果*/
}
- 捕鱼和分鱼
- 捕鱼和分鱼
- 捕鱼和分鱼
- 捕鱼和分鱼
- 捕鱼和分鱼
- 捕鱼和分鱼
- 捕鱼分鱼
- (百例编程)15.捕鱼和分鱼
- 捕鱼和分鱼 java实现 c实现
- 捕鱼分鱼、出售鱼、平分七筐鱼
- 捕鱼分鱼程序 C语言
- 捕鱼
- 捕鱼
- canvas 心跳和捕鱼炮台
- 【cocos2d-x IOS游戏开发-捕鱼达人10】鱼的产生和移动
- 【cocos2d-x IOS游戏开发-捕鱼达人11】鱼的产生和移动:完善
- 捕鱼控制鱼的种类和数量
- 用《捕鱼达人3》讲解Cocos引擎3D技术(一):加载鱼的模型和播放动画
- -bash: !": event not found
- 解决跨域iframe自适应高度(转自:http://www.lzlu.com/blog/?p=692)
- Boost.asio备忘
- 后台更新与删除文件
- PHP在iframe 中session跨域丢失的解决办法
- 捕鱼和分鱼
- C#编写斗地主
- 需求分析阶段的工作(一):业务用例和系统用例
- 说服罢工的 Cygwin
- 群发邮件
- CopyU!下一版本的界面预览
- 在fedora14下安装vmware 7.1.4 build-385536 出现C header files matching your running kernel were not found. 错误
- Android 2.0环境下的图标设计原则
- Qt Creator2.1.0使用