回 帖 发 新 帖 刷新版面

主题:请问汉诺塔问题怎么解决

要求:任意输入一个层数。

回复列表 (共2个回复)

沙发

var n:integer;
    x,y,z:char;
procedure hanoi(n:integer;x,y,z:char);
begin
     if n=1 then writeln(1:4,'pan  from ',x,' to ',z)
            else
                begin
                     hanoi(n-1,x,z,y);
                     writeln(n:4,'pan  from ',x,' to ',z);
                     hanoi(n-1,y,x,z);
                end;
end;

begin
     read(n);
     x:='x';
     y:='y';
     z:='z';
     hanoi(n,x,y,z);
end.

板凳

[em8]我是个菜鸟,但我也来试下。[em2]
program hanio;

var
   i:integer;

procedure move(n,a,b,c:integer);
begin    
   if n=1
     then writeln(a,'-->',c)
   else begin
     move(n-1,a,c,b);
     writeln(a,'-->',c);
     move(n-1,b,a,c);
        end;
end;

begin
  writeln('Input chenshu');
  read(i);
  move(n,1,2,3);
end.

我来回复

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