相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。 *** 作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上, *** 作过程中盘子可以置于A、B、C任一杆上。
摘要了书上的代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include
void Hanoi(int, char, char, char);
void Move(int, char, char);
int main(void) {
int n;
printf("请输入圆盘个数:");
scanf("%d", &n);
printf("%d个圆盘移动过程如下:\n", n);
Hanoi(n, 'A', 'B', 'C');
return 0;
}
/*
Hanoi函数功能是将a上的n个圆盘借助b移动倒c上;
参数n表示圆盘个数,参数a,b,c分别表示3个塔座;
*/
void Hanoi(int n, char a, char b, char c) {
if (n == 1)
Move(n, a, c);
else {
Hanoi(n - 1, a, c, b);
Move(n, a, c);
Hanoi(n - 1, b, a, c);
}
}
/*
Move函数的功能是将第n个圆盘从x移到y;
n表示第n个圆盘,x、y表示塔座
*/
void Move(int n, char x, char y) {
printf(" %d号圆盘从塔座%c移动到塔座%c\n", n, x, y);
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)