解题思路:
利用递归思想解决。
将问题分为三步:
先将n-1个盘子借助目标柱子移动到临时柱子
再将最大盘子移到目标柱子
最后将n-1个盘子从临时柱子借助起始柱子移动到目标柱子
注意事项:
参数顺序要正确,确保在递归调用中起始、目标和临时柱子的编号不会出错
参考代码:
#include<stdio.h>
void hanoi(int n,int from,int to,int temp)
{
if(n==1)
{
printf("Move 1 from %d to %d\n",from,to);
return;
}
hanoi(n-1,from,temp,to);
printf("Move %d from %d to %d\n",n,from,to);
hanoi(n-1,temp,to,from);
}
int main()
{
int n;
scanf("%d",&n);
hanoi(n,1,3,2);
return 0;
}
0.0分
2 人评分
【偶数求和】 (C语言代码)浏览:674 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:609 |
文科生的悲哀 (C语言代码)浏览:1538 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:513 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:1322 |
拆分位数 (C语言代码)浏览:558 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:456 |
C语言训练-斐波纳契数列 (C语言代码)浏览:644 |
C语言训练-最大数问题 (C语言代码)浏览:668 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:939 |