有趣的分油算法
2010-08-07 13:32
113 查看
分油算法:一个桶中有12斤油最多也只能装12斤,要求倒出6斤,可现在另外只有两个桶,分别可装9斤与5斤,请问应如何来倒?
程序如何实现
倒退法:12斤油桶设为a,5斤油桶设为b,9斤油桶设为c
假设油已经倒出完毕,呢么a,b,c三个桶里面的油,肯定有一个桶是6斤油,而肯定不是b,因为b最多能装5斤油,也就是说6斤的油肯定不是在a中就是在b中,又因为总共有12升,所以可以肯定的是ac各6斤油,而b则为0,
下面是具体的倒油过程:
初始阶段:a=12,b=0,c=0
1.从a桶向b桶中倒油,直到b桶倒满为止,这时a桶剩下a=12-5=7,而b桶则为b=5,
2.从b桶向c桶倒油,直到b桶的油倒完为止,此时c=5,而b=0,
3.从a桶向b桶中继续倒油,直到b桶满了,此时a=12-5-5=2,而b=5
4.从b桶向c桶中倒油,直到c桶满了为止,这时c=5+4=9,而b=5-4=1
5.将c桶中的油全部倒入a中,此时a=2+9=11,而b=1,
6,将b中的油全部倒入c中,此时b=0,c=1,
7.将a中的油倒入b中,直到b满了为止,此时b=5,a=11-5=6,
8.将b中的油全部倒入c中,此时c=1+5=6,b=0
倒油完毕!!!!!
//伪代码
function daoyou (){
$a=12,$b=0,$c=0;
$a=12-5;
$b=5;
$c=$b;$b=0;
$a=12-5-5;$b=5;
$c=9;$b=$b-(9-$b);
$a=$a+$c;
$c=$b;$b=0;
$b=$a-($a-5);$a=$a-$b;
$c=$c+$b;
echo "到油完毕:";
}
程序如何实现
倒退法:12斤油桶设为a,5斤油桶设为b,9斤油桶设为c
假设油已经倒出完毕,呢么a,b,c三个桶里面的油,肯定有一个桶是6斤油,而肯定不是b,因为b最多能装5斤油,也就是说6斤的油肯定不是在a中就是在b中,又因为总共有12升,所以可以肯定的是ac各6斤油,而b则为0,
下面是具体的倒油过程:
初始阶段:a=12,b=0,c=0
1.从a桶向b桶中倒油,直到b桶倒满为止,这时a桶剩下a=12-5=7,而b桶则为b=5,
2.从b桶向c桶倒油,直到b桶的油倒完为止,此时c=5,而b=0,
3.从a桶向b桶中继续倒油,直到b桶满了,此时a=12-5-5=2,而b=5
4.从b桶向c桶中倒油,直到c桶满了为止,这时c=5+4=9,而b=5-4=1
5.将c桶中的油全部倒入a中,此时a=2+9=11,而b=1,
6,将b中的油全部倒入c中,此时b=0,c=1,
7.将a中的油倒入b中,直到b满了为止,此时b=5,a=11-5=6,
8.将b中的油全部倒入c中,此时c=1+5=6,b=0
倒油完毕!!!!!
//伪代码
function daoyou (){
$a=12,$b=0,$c=0;
$a=12-5;
$b=5;
$c=$b;$b=0;
$a=12-5-5;$b=5;
$c=9;$b=$b-(9-$b);
$a=$a+$c;
$c=$b;$b=0;
$b=$a-($a-5);$a=$a-$b;
$c=$c+$b;
echo "到油完毕:";
}
相关文章推荐
- 几道有趣的算法题
- 算法其实很有趣之——穷举法、递推、递归、分治、概率(算法需有通用性)
- 白话经典算法系列之十一 一道有趣的GOOGLE面试题 --【解法2】
- 有趣的算法世界---附录(1)
- 并行博弈树搜索算法-第8篇 写在最后的话:有趣的的博弈算法
- 一些有趣的算法【温故而知新】
- 有趣的数 算法的题解(数位DP问题)
- 有趣的算法、逻辑面试题
- FCC参阅笔记之有趣的算法(下)
- 一道有趣的数字算法题
- 白话经典算法系列之十 一道有趣的GOOGLE面试题
- 【白话经典算法系列之十一】一道有趣的GOOGLE面试题 --【解法2】
- C语言:一个有趣的算法总结。
- 近日发现一个有趣的数据分析项目 (解析滴滴算法大赛---数据分析过程)
- 一道有趣的面试算法题
- 白话经典算法系列之十 一道有趣的GOOGLE面试题
- 有趣的算法问题12——跳跃游戏1(贪心算法)
- 【100题纪念】【有趣的算法】【leetcode题解】【E】【84】Merge Sorted Array
- 有趣的算法世界---附录(2)
- 有趣的算法题