汉诺塔算法
来源:互联网 发布:房地产网络推广职责 编辑:程序博客网 时间:2024/04/25 23:33
/*汉诺塔算法
解法如果柱子标为ABC,要由A搬至C,在只有一个盘子时,就将它直接搬至C,当有两个盘子,就将B当作辅助柱。
如果盘数超过2个,将第三个以下的盘子遮起来,就很简单了,每次处理两个盘子,
也就是:A->B、A ->C、B->C这三个步骤,而被遮住的部份,其实就是进入程式的递回处理。
事实上,若有n个盘子,则移动完毕所需之次数为2^n - 1
*/
#include <stdio.h>
//可以把A,B,C依次当成源,辅助,目的
void hanoi(int n, char A, char B, char C)
{
if(n == 1) //只有一个盘子时,就将它从“源”直接搬至“目的”
{
printf("Move sheet %d from %c to %c\n", n, A, C);
}
//如果盘数超过2个(n>2),处理上边的n-1个盘子,以A为源,C为辅助,B为目的
//上边的n-1个处理完,B上有n-1个盘子,A上有一个,
//处理最下边的第n个,将A上的最后一个移动到C上,再以B为源,C为目的,A为辅助移动
//B上的n-1个盘子
else
{
hanoi(n-1, A, C, B);
printf("Move sheet %d from %c to %c\n", n, A, C);
hanoi(n-1, B, A, C);
}
}
int main(void)
{
int n;
printf("请输入盘数:");
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C');
return 0;
}
- 汉诺塔算法
- “汉诺塔”算法
- 汉诺塔算法
- 汉诺塔算法
- 汉诺塔算法
- 汉诺塔算法
- 汉诺塔算法
- 【算法】汉诺塔
- 汉诺塔算法
- 汉诺塔-算法
- 汉诺塔算法
- 汉诺塔算法
- 汉诺塔算法
- 汉诺塔算法
- 汉诺塔 算法
- 汉诺塔算法
- 汉诺塔算法
- 汉诺塔算法
- 第五章 类和继承
- 基于Linux操作系统下运行命令时CTRL+Z的作用
- ps颜色不正确 偏色 失真
- js/css文件的优化--转自IBM-developerworks
- 【原】屏蔽免费空间的谷歌广告
- 汉诺塔算法
- XML的解析
- WebService服务器端获取调用端的URL用于认证或者安全校验
- JSP配置
- Expect 教程中文版
- “是”红色显示,否不予改变
- MFC向导制作心得
- 对Android任务栈的理解(很乱,只是随便记下我的总结)
- 心得笔记【4】