标签:
题目链接:
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; }
标签:
原文地址:http://blog.csdn.net/lianai911/article/details/45025743