概述
在csdn看到有趣的算法题:5L和6L水桶,如何得到三升水?
本篇文章问题是转载 沉晓 写的【大厂智力题】水桶倒水问题
//以下是我对这个算法问题的一些个人思考
问题:5L和6L水桶,如何得到3L水?
首先解析一下题目,已知条件: 水桶 5L 6L 求 3L 水?(刚看到这个题目的时候还是比较头大的,不知道如何下手,但是从逆向思维上看,这个问题的解法应该是只有两个,下面看分析)
// 因为我只有2个水桶求3L水,所以要么是 6L水桶 余 3L, 要么是 5L 水桶 余 3L
- 其一(6L => 3L)
// 6L 水桶余 3L(6-3),这就要求在 5L水桶中余2L , 然后6L倒出去3L
1). 6L 水桶满水,倒入5L水桶中,6L水桶余1L水
2). 1L水倒入5L水桶中, 6L水桶装满再倒入5L水桶中, 6L水桶余2L水
3). 2L水倒入5L水桶中,6L水桶装满再倒入5L水桶中,6L水桶余3L水
总结:这个方法利用的是 6 - 5 = 1 这个差值,我感觉把这个思路往递归算法上靠应该是比较形象的
- 其二(5L => 3L)
// 5L 水桶余 3L(5-2),这就要求在 6L水桶中余4L , 然后5L倒出去2L
1). 5L 水桶满水,倒入6L水桶中,6L水桶余5L水
2). 5L水桶装满倒入6L水桶中, 5L水桶余4L水
3). 4L水倒入6L水桶中,5L水桶装满倒入6L水桶,5L水桶余3L
总结:其实这个思路是和上面一致的,只不过是在递减。一开始就把桶最多剩余水量求出来,然后利用6 - 5 = 1的差值,一个一个实现递减
总结:算法问题是对现实世界问题的升华
//算法问题可以理解为数学问题,它是对人的思维逻辑的一种验证方式。就和上文水桶倒水的例子一样,在程序中,它是对递归算法的一种实例化,在数学中,其实是和等差数列是一类的。
最后
以上就是结实彩虹为你收集整理的算法:水桶倒水问题的全部内容,希望文章能够帮你解决算法:水桶倒水问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复