pascal 倒水

来源:百度知道 编辑:UC知道 时间:2024/05/29 15:16:04
有两个水壶(无刻度),其容量分别为 x ,y 升,另有一个大水缸,其容量相对于水壶来说容量无限,足以用来给水壶加水或倒水。开始时, Y 壶空,水缸有无限水,有最少次数在 Y 中量出 Z 升水来(x ,y ,z<=100)。

输入:
X,Y,Z
输出:
次数
下接倒水方案:
每行:X,Y(表示每倒一次后X,Y壶中的水量)

宽度优先搜索。
具体程序来不及打,马上要关电脑,说一下思路:
用一个队列,存储状态。每次将队首元素展开,将可以得到的并且不重复的状态加入队列,然后队首元素出队。每一个状态记录它的前驱。这样做一直找到解必然是最优解。初始时队里只有一个状态,即初始状态。
要程序的话有空敲好了给你。