回 帖 发 新 帖 刷新版面

主题:[原创]汉诺塔

大家都知道汉诺塔吧...(我就不介绍了)游戏是有3柱的,其中有一个空闲柱帮助搬运.
大家都知道应该用递归来做吧(我就不讲了)
现在问题是:4柱汉诺塔如何做?(就是:有4个柱子,其中有两个空闲柱,如何移动使其全部移动到另一柱上?(其他规则与原汉诺塔同))


program fourhanoi;
var m:integer;
procedure movetower(n,A,D,C,B:integer);
  procedure moveDisc(fromDisc,toDisc:integer);
  begin
    write(fromDisc,'->',toDisc,' ');
  end;
begin
  if n>0 then
  begin
    movetower(n-2,A,B,D,C);
    moveDisc(A,C);
    moveDisc(A,D);
    moveDisc(C,D);
    movetower(n-2,B,D,C,A);
  end;
end;
begin
  readln(m);
  movetower(m,1,4,3,2);
end.

回复列表 (共21个回复)

沙发

怎没人帮我?????????

板凳

同上

3 楼

顶上来

4 楼

同上

5 楼

书上有 递归

6 楼

XXX
书上的是三柱的,那么简单我当然知啦.........xxx
可我这题是四柱的...
PS:Matodied会不会做???帮一下忙..

7 楼

顶上来...(斑竹是否会做???帮帮忙)

8 楼

1. 让第四棵柱子闲下来……
2. 把最小的放在第四棵上不动,其他移动。最后把第四棵上的再移过去即可。(步数应该最小[B]吧[/B])……

9 楼

四塔问题貌似要用到动态规划

10 楼

其实三柱汉诺塔只能用递归,4柱的也是...

我来回复

您尚未登录,请登录后再回复。点此登录或注册