标题:分红酒
有4个红酒瓶子,它们的容量分别是:9升, 7升, 4升, 2升
开始的状态是 [9,0,0,0],也就是说:第一个瓶子满着,其它的都空着。
允许把酒从一个瓶子倒入另一个瓶子,但只能把一个瓶子倒满或把一个瓶子倒空,不能有中间状态。这样的一次倒酒动作称为1次操作。
假设瓶子的容量和初始状态不变,对于给定的目标状态,至少需要多少次操作才能实现/p>
本题就是要求你编程实现最小操作次数的计算。
输入:最终状态(逗 分隔)
输出:最小操作次数(如无法实现,则输出-1)
例如:
输入:
9,0,0,0
应该输出:
0
输入:
6,0,0,3
应该输出:
-1
输入:
7,2,0,0
应该输出:
2
最初做这道题的时候,并没有任何思路。
最近准备软件大赛的时候,刚好看到这题,我便开始用刚学会的深搜来解决,结果发现不太实际,自己的代码也没有通过。
后来听同学说,遇到这种求最小次数等的问题最好用广搜,所以便开始学习广搜,结果如此奇妙,果然还是广搜的效率高很多。
通过学习大牛的思路,终于理解了这道题,通过我自己的代码和注释,希望对别人有所帮助。
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览33958 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!