不是VIP会员,不能显示答案

题目解答

题目:
汉诺塔问题
将A柱上的圆盘移到C柱。移动规则如下: 1、一次只能移动一个盘; 2、不允许把大盘放在小盘上。 第一行只有一个正整数:k,表示总移动次数
接下来的k行,每行是一种移动方法。例如输入3
输出
7
A->C
A->B
C->B
A->C
B->A
B->C
A->C
var
k,n,i:longint;
procedure try(a,b,c:char;m:longint);
begin
if m=1 then writeln( a,'->',c )
else
begin
try( a,c,b,m-1 或a,c,b, m div 2 );
writeln(a,'->',c);
try( b,a,c,m-1 或 b,a,c,m div 2 );
end;
end;
begin
readln(n);
k:=1;
for i:=1 to n do
(k:=k*2) ;
writeln(k-1);
try( 'A','B','C',n ('A','B','C',K-1)   );
end.
考点:
分析:
解答:
评论:
老师: