C语言实现汉诺塔
阅读原文时间:2023年07月08日阅读:2

汉诺塔

要把A柱子上的盘子移动到C柱子上,在移动过程中可以借助B柱子,但是要求小的盘子在上大的盘子在下。

解题思路:

1、把A柱子上的前N-1个盘子借助C柱子,全部移动到B柱子上(过程暂不考虑),再把第N个盘子由A柱子移动到C柱子上。

那么剩下要移动的盘子在B柱子上了。

2.把B柱子上的前N-2个盘子借助C柱子,全部移动到A柱子上(过程暂不考虑),再把第N-1个盘子由B柱子移动到C柱子上。

重复上面的两个步骤即可把A柱子上的盘子全部移动到C柱子上。

算法实现:

#include

int num=0;//统计移动次数3
void hanio(int n,char a,char b,char c){ //n是盘的个数 A,B,C为三个放盘的塔
if(n==1){
num++; // 移动一次加一次
printf("第%d次 %c-->%c\n",num,a,c); //打印A移动到C
}else{
hanio(n-1,a,c,b); //n-1次 A通过C移动到B
num++; // 移动一次加一次
printf("第%d次 %c-->%c\n",num,a,c); //打印A移动到C
hanio(n-1,b,a,c); //n-1次 B通过A移动到C
}
}
int main() {
int n=3;
hanio(n,'A','B','C');
}

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章