081文迪


私信TA

用户名:dotcpp0787208

访问量:404

签 名:

等  级
排  名 12411
经  验 974
参赛次数 3
文章发表 9
年  龄 0
在职情况 学生
学  校 内江师范学院
专  业

  自我简介:

解题思路:
利用递归思想解决。

将问题分为三步:

先将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 人评分

  评论区

  • «
  • »