Discuss / Python / 你们是不是想简单了

你们是不是想简单了

Topic source

JC辰01227

#1 Created at ... [Delete] [Delete and Lock User]

可能是我思考错了也不一定。 我是第一次接触汉诺塔,因为这个编程才去查这是个啥游戏的。 按道理说,汉诺塔的游戏编程,应该是一种类似外挂的东西,就是告诉你每一步怎么走,才能完成你所选择的层数最后的结果。 比方说,把A塔上的层都移动到C,那么A塔上如果有1层、2层、3层、4层、5层……难易程度肯定是不一样的,只有一层,那就直接从A丢到C;如果有两层,就3步完成;如果有3层,就像评论里的几位写的。

现在的课后作业是只要求了3层,但是应该是带有判别式的才对,比如我如果直接把大的层移动到小的层上,就判定为错,程序重新进行下一个选择。 最后的结果是程序自己去移动,然后在不影响规则的前提下,找出最快速的从A移动到C的方法……比如是有5层而不是像作业一样只有3层,那它应该怎么移动,然后print出每一步。 即便是像作业一样只有3层,也应该是程序自己去玩,然后告诉你它最后成功时的每一步。

可能真的是我想错了也不一定,我总觉得能写出来的……

All-In-Leon

#2 Created at ... [Delete] [Delete and Lock User]

这个问题的最少步数是可以算出来的,先贴代码:

def move(n,a,b,c): if n>0: move(n-1,a,c,b)#将n-1层从A挪到B print(a,'-->',c)#将最后一层从A挪到C move(n-1,b,a,c)#将n-1层从B挪到C move(3,'A','B','C')

假设有n层的时候,步数为: A(n) 那当有n+1层的时候,步数为: A(n+1)=2A(n)+1 显而易见的是,当n=1时,只需挪动一步,即: A(1)=1 所以可以计算出当有n层的时候,所需的步数: A(n)=2^n-1


  • 1

Reply