Hanoi

Hanoi,第1张

相传在古印度圣庙中,有一种被称为汉诺塔(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);
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/735451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存