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

📄 towers.cpp

📁 数据结构课程设计源码以及报告 有3个程序:1)哈弗曼树及哈弗曼编码 2)排序—内部排序方法 3)Hanoi Tower
💻 CPP
字号:
# include <iostream.h>
# include "stdlib.h"

int i=1; // 设置变量i,以跟踪移动圆盘的步数

// 基本情况,直接将一个圆盘移动到另一个圆盘上
class Hanoi{
public:
void move_disk(char src,char dst)
{	
	cout<<"  "<<i<<"     "<<src<<" =====> "<<dst; //打印出移动的路径 从**塔盘至**塔盘
	i=i++;
	cout<<endl;
}

//应用递归的方法实现n>1时的移动
void towers(int n, char src, char mid, char dst)
{
	if(n==1)
	{
		move_disk(src, dst);
			return;
	}   //当n=1时的处理
	towers(n-1,src,dst,mid);      //以 dst(C塔)为辅助,将1到n-1号圆盘全部移动到mid(B塔)上
	move_disk(src, dst);          //直接将A塔上的圆盘移动到C盘上
	towers(n-1, mid, src, dst);   //将B塔上的1至n-1号盘移动至C塔上
}
}H;
	
void main()
{	
	// 欢迎界面
	cout<<"         ****************      "<<endl<<endl<<endl;
	cout<<"       Welcome to Hanoi Game."<<endl<<endl<<endl;
	cout<<"         ****************      "<<endl;
	_sleep(2500); 
	system("cls"); // 该界面保持2.5秒之后进入主函数

	int n, disks;		//设定一个圆盘个数的参数
dd:	cout<<endl<<" Nunber of disks(1~15):";
	cin>>n;		//从用户获取圆盘个数参数
	disks=(int)n;
	if(disks==0)
	{cout<<" Bad Input!"<<endl;
	 goto dd;}
	if(disks>0&&disks<=15){
	  cout<<"steps  from * to *"<<endl;
	  H.towers(disks,'A','B','C');
	  cout<<endl<<" Continue...(Y/N):";
	//是否循环汉诺塔问题
	char n;
	cin>>n;
	while(n=='y'||n=='Y')
	{	i=1;
		cout<<endl<<" Nunber of disks(1~15):";
		cin>>disks;
		if(disks>0&&disks<=15){
			cout<<"steps  from * to *"<<endl;
			H.towers(disks,'A','B','C');
			} 
		else{ 
		  cout<<" Bad Input!"<<endl; 
		    goto dd;
			}
		cout<<endl<<" Continue...(Y/N):";
		cin>>n;
		}
	cout<<endl<<"	BYE...!"<<endl;
	exit(0);
	}
	else
		cout<<" Bad Input!"<<endl;
		goto dd;
}

⌨️ 快捷键说明

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