我正在做一个关于使用线性规划来规划汉诺塔问题的作业,并且不允许使用任何递归函数。问题是我的解决方案不是像递归方法那样的最优方法。它产生多余的步骤。例如:
我有3个分别名为A,B,C的杆,并且有2个名为1、2的磁盘(磁盘1小于磁盘2,磁盘1在磁盘2上),然后有2种方法将所有磁盘从杆A中移出使用杆B作为中间杆到杆C的方法如下:
那么,我如何(更精确地说:一种可以编程的算法)知道磁盘1必须首先移至棒B而不是移至磁盘C以获得最佳解决方案?非常感谢您的帮助。谢谢!
最佳答案
关键是要知道需要移动多少磁盘:
如果您开始使用“备用”杆,则堆栈中有偶数个磁盘
如果堆栈中的磁盘数量奇数,则开始使用“目标”杆