⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex3_13.cpp

📁 c++程序设计教材第二版书上即课后习题源代码
💻 CPP
字号:
/*【例3.13】汉诺塔问题。有A、B、C三根柱子,A柱上有n个大小不等的盘子,大盘在下,小盘在上。
要求将所有盘子由A柱搬动到C柱上,每次只能搬动一个盘子,搬动过程中可以借助任何一根柱子,但
必须满足大盘在下,小盘在上的条件。打印出搬动的步骤。
*/
#include <iostream>
using namespace std;

void move(char,char);
void hanoi(int,char,char,char);
int main(){
	int n;
	cout<<"输入盘子数:"<<endl;
	cin>>n;
	hanoi(n,'A','B','C');
	cout<<endl;
	return 0;
}
void hanoi(int n,char source,char temp,char target){
	if(n==1)  move(source,target);
	else{
		hanoi(n-1,source,target,temp);				//将n-1个盘子搬到中间柱
		move (source,target);					//将最后一个盘子搬到目标柱
		hanoi(n-1,temp,source,target);				//将n-1个盘子搬到目标柱
	}
}
void move(char source,char target){
	cout<<source<<"->"<<target<<'\t';
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -