【经典题目】汉诺塔

背景自己搜

在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?

思路:我们假设已经在中间的塔放好了n-1个,那么第n个放在目标塔上,然后类似地将n-1个盘放在目标塔上即可

明显是递归问题的结构

递归解决:

 #include<bits/stdc++.h>
using namespace std;
void Hanoi(int n,char s,char m,char t){
	if(n==1){cout<<s<<"->"<<t<<endl;return;}
	Hanoi(n-1,s,t,m);
	cout<<s<<"->"<<t<<endl;
	Hanoi(n-1,m,s,t);
}
int main(){
	int n;cin>>n;
	char a,b,c;
	cin>>a>>b>>c;
	Hanoi(n,a,b,c);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/melon_sama/article/details/108405531