NEFU564 汉诺塔【递归】

来源:互联网 发布:上海古玩地摊淘宝市场 编辑:程序博客网 时间:2024/05/23 17:12

题目链接:

http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=564


题目大意:

庙里有3个柱子,柱A、柱B、柱C。柱A有64个盘子,从上往下越来越大。庙里的老和尚想把这64个盘子

全部移动到柱C上。移动的时候始终只能小盘子压住大盘子,大盘子不能在小盘子上边。每次只能移动一

个。问:将柱A上面钱N个盘子从A搬到柱C的移动次数最少的搬动方法是什么


思路:

吧N个盘子从柱A移到柱C需要三个步骤:

1)把住A上N-1个盘子借助柱C移到柱B

2)把柱A上第N个盘子移动到柱C

3)把柱B上N-1个盘子借助柱A移动到柱C


AC代码:

#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;void move(int n,char a,char b){printf("number..%d..form..%c..to..%c\n",n,a,b);}int Hanoi(int n,char a,char b,char c){if(n == 1)move(1,a,c);else{Hanoi(n-1,a,c,b);move(n,a,c);Hanoi(n-1,b,a,c);}return 0;}int main(){int N;while(~scanf("%d",&N)){Hanoi(N,'A','B','C');}return 0;} 


0 0