0
点赞
收藏
分享

微信扫一扫

NEFU564 汉诺塔【递归】


题目链接:

​​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 条评论