c实现倒水问题和过桥问题

本文介绍了如何使用C语言实现倒水问题(如3升和5升桶得到4升水)和过桥问题(求解最短过桥时间)。倒水问题通过穷举法解决,过桥问题采用动态规划策略,如"能者多劳",确保快速的人来回送灯以减小总时间。文章提供了详细的解释和代码实现。
摘要由CSDN通过智能技术生成

http://blog.sina.com.cn/s/blog_ac9074a201018uyf.html

感谢这位大人精彩思路的分享。

一、倒水问题

1.只有两个容器,容量分别为a,b,要量出c升的水。

穷举法实现其基本思想为:用小桶容量的倍数对大桶的容量进行取余。比如3升的桶和5升的桶得到4升水可以这样做:

3 % 5 = 3 //小桶装水倒入大桶,小桶空,大桶有小桶的水量,不等于要求的水量。继续下一步

6 % 5 = 1 //再来一次,小桶装水倒入大桶,大桶溢出,倒掉,再进行把剩余的小桶剩下一升倒入,大桶此时有一升的水量,不等于要求的水量。继续下一步

9 % 5 = 4 //再来一次,小桶装水倒入大桶,小桶空,大桶是上一步剩下的一升加上此时小桶的三升,等于要求的水量。终止程序。

成功得到4升水。

同样,用7升的桶和11升的桶得到2升水可以这样做:

7 % 11 = 7 //小桶装水倒入大桶,小桶空,大桶有小桶的水量七升,不等于要求的水量。继续下一步

14 % 11 = 3 //小桶装水倒入大桶,小桶空,大桶溢出,倒掉,再进行把剩余的小桶剩下三升倒入,大桶此时有三升的水量,不等于要求的水量。继续下一步

21 % 11 = 10 //小桶装水倒入大桶,小桶空,大桶有上一步剩下的三升再加上此时小桶的七升,不等于要求的水量。继续下一步

28 % 11 = 6 //小桶装水倒入大桶,小桶空,大桶溢出,倒掉,再进行把剩余的小桶剩下六升倒入,大桶此时有六升的水量,不等于要求的水量。继续下一步

35 % 11 = 2 //小桶装水倒入大桶,小桶空,大桶溢出,倒掉,再进行把剩余的小桶剩下二升倒入,大桶此时有二升的水量,等于要求的水量。终止程序。

成功得到2升水。

代码实现如下:

   #include<stdio.h>
int dump(int,int,int);

int main(void)
{ 
int a,b,c,status;
scanf("%d%d%d",&a,&b,&c);
/* a = 2;b&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值