题目链接:
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;
}