汉诺塔问题
来源:互联网 发布:刀剑乱舞囚禁play乐乎 编辑:程序博客网 时间:2024/06/11 07:27
【问题】上帝创造世界时造了3根金刚石柱子,在第一根柱子上从下往上按大小顺序摞着64片黄金圆片,上帝命令婆罗门把圆盘从上面开始按大小顺序重新摆放到第二根柱子上,并且规定一次只能移动一个圆盘,在小圆盘上不能放大圆盘。编程求解n个圆盘的汉诺塔问题。
【分析】递归:1.将前n-1个圆盘从第一根柱子移到第三个柱子,即:A->C;
2、将第n个圆盘从第一个柱子移到第二个柱子,即:A->B;
3、将前n-1个圆盘从第三个柱子移到第二个柱子。
【代码实现】
#include <stdio.h>
void Hanoi(int n,char a,char b,char c);
void Move(int n,char a,char b);
int main()
{
int n;
printf("Input the number of disks:\n");
scanf("%d",&n);
printf("Steps of moving %d disks from A to B by means of C:\n",n);
Hanoi(n,'A','B','C');
return 0;
}
/*函数功能:用递归方法将n个圆盘借助c从a移动到b*/
void Hanoi(int n,char a,char b,char c)
{
if(n==1)
{
Move(n,a,b);
}
else
{
Hanoi(n-1,a,c,b);//将n-1个圆盘a->c
Move(n,a,b);//第n个圆盘a->b
Hanoi(n-1,c,b,a);//将n-1个圆盘c->b;
}
}
//函数功能:将第n个圆盘从a->b
void Move(int n,char a,char b) { printf("Move %d :from %c to %c \n",n,a,b); }
- 汉诺塔问题 背包问题
- 递归问题,汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题.
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- Android 图片选择器
- Wasserstein distance&测度
- Java安装和运行第一个程序
- Linux Platform devices 平台设备驱动
- jdbc
- 汉诺塔问题
- 467. Unique Substrings in Wraparound String
- 2017年最新前端工程师面试题整理
- DBGridEh数据不能左对齐问题
- 蓝色给自己的网站加一个好看的跳转页面代码
- Visual Studio 跳转到定义后怎么返回
- 第七届蓝桥杯决赛JavaA组第一题_阶乘位数
- ssm-百度第三方登录
- java中的public,private,protected修饰符,以及不写(默认)时的区别