汉诺塔

#include<stdio.h>
void hanoi(int n, char a, char b, char c)//a为起始柱,c为重点柱,b为中间柱
{
	if (n == 1) printf("%c-->%c\n", a, c);
	else
	{
		hanoi(n - 1, a, c, b);
		//把最后一片n独立,上n-1片移动到中间柱,也就是b柱,此时b为终点柱
		printf("%c-->%c\n", a, c);//把第n片放到hanoi(n)的重点柱
		hanoi(n - 1, b, a, c);
		//继续移动n-1片圆盘,因为经过上一次hanoi(n-1)
		//上n-1片圆盘的其实点全变成了b柱(也就是一开始的中间柱)
	}
}
int main()
{
	int n;
	scanf("%d", &n);
	hanoi(n,'a','c','b');
	return 0;
}

参考视频:https://www.bilibili.com/video/BV1dx411S7sY

posted on 2021-01-12 14:33  不依法度  阅读(30)  评论(0)    收藏  举报

导航