C语言中的Hanoi(汉诺塔)问题
2013-04-19 10:32
357 查看
什么是汉诺塔?
如题: 有n个大小不一盘子由小到大叠在一起, 放在盆A中,还盆B和盆C是空的。
要求: 将n个盘子依次由小到大移动到盆C中,每次只能移动一个,在移动过程中盘子要始终保持由小到大的叠在一起。
例如:最简单的是只有3个盘子。 321 3最大,1最小的步骤为:
1、将21 通过C盆移到B盆。
A - C;
A - B;
C - B;
2、将3移动到C盆。
A - C
3、将21 通过A盆再移动到C盆。
B - A;
B - C;
A - C;
打印结果:
A > C
A > B
C > B
A > C
B > A
B > C
A > C
如题: 有n个大小不一盘子由小到大叠在一起, 放在盆A中,还盆B和盆C是空的。
要求: 将n个盘子依次由小到大移动到盆C中,每次只能移动一个,在移动过程中盘子要始终保持由小到大的叠在一起。
例如:最简单的是只有3个盘子。 321 3最大,1最小的步骤为:
1、将21 通过C盆移到B盆。
A - C;
A - B;
C - B;
2、将3移动到C盆。
A - C
3、将21 通过A盆再移动到C盆。
B - A;
B - C;
A - C;
#include <stdio.h> int main() { void hanoi(int n,char a,char b,char c); int n = 3; char a = 'A',b='B',c='C'; hanoi(n,a,b,c); return 0; } void hanoi(int n, char a, char b, char c) { void move(char src, char target); if (n == 1) { move(a, c); } else { hanoi(n - 1, a, c, b); move(a, c); hanoi(n - 1, b, a, c); } } void move(char start, char end) { printf("%c > %c \n", start, end); }
打印结果:
A > C
A > B
C > B
A > C
B > A
B > C
A > C
相关文章推荐
- c语言经典问题:汉诺塔 Hanoi问题
- 用C语言解决(hanoi)汉诺塔问题——函数的递归调用
- C语言实现Hanoi(汉诺塔)问题的递归求解
- 递归算法之Hanoi(汉诺塔)问题学习
- 汉诺塔问题 hanoi(递归)
- Hanoi(汉诺塔)问题。
- openjudge 4147 汉诺塔问题(Hanoi)
- 数据结构基础(6)--递归和函数调用--汉诺塔问题C语言实现
- 汉诺塔问题hanoi
- 《hanoi(汉诺塔)问题》求解
- Tower of Hanoi (汉诺塔问题)
- Hanoi汉诺塔问题
- 学习C/C++语言:递归求解hanoi汉诺塔问题
- 【经典问题】汉诺塔(递归、C语言实现)
- 1、一日一程序之C语言的Hanoi问题
- 简单递归—Hanoi(汉诺塔问题)
- 《程序员的数学》:汉诺塔问题(Hanoi问题)的递归算法与非递归算法总结
- C语言_递归函数之汉诺塔问题
- 经典OJ:Hanoi汉诺塔的移动问题
- Hanoi--汉诺塔问题