汉诺塔
汉诺塔
2023-09-11 14:15:52 时间
先看一下二层汉诺塔的一定过程:
如果多层的话:
通过上面分析你会发现,我们的大致步骤如下:
一、先将 n-1 层的汉诺塔 通过 C 移动到 B, 将最地下的一层移到C
二、再将B上面的汉诺塔移动同通过 A 移动到 C
代码如下:
#include<cstdio>
void hanoi(int n,char A,char B,char C)
{
if(n==1)
{
printf("%c -> %c\n",A,C);
}
else
{
hanoi(n-1,A,C,B);//n-1 层通过C 移动到B
printf("%c -> %c\n",A,C);
hanoi(n-1,B,A,C);//n-1层通过A 移动到C
}
}
int main(void)
{
hanoi(2,'A','B','C');
return 0;
}
不懂的可以再看一下视频。里面博主讲的特别好:
https://www.bilibili.com/video/BV1dx411S7sY