#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
//记录次数函数
int sum=0;
//功能函数
void gotoxy(int , int );//光标移动函数
void Delete(int ,int );//删除打印效果函数
void Four(int x);//输出4个*的函数
void Three(int x);
void Two(int x);
void One(int x);
//实现函数
void Init();//初始化函数
void Hannuota(int layers,char a,char b,char c);//汉诺塔递归实现函数
void ShowDisc(char disc,int position);//打印效果函数
void Move(char begin,int position,char end);//显示汉诺塔实现函数
int main()//主函数
{
system("mode con cols=120 lines=30");//控制窗口效果
Init();
gotoxy(45,24);
return 0;
}
//功能函数
void gotoxy(int x,int y)//光标移动函数
{
COORD pos={x,y};
HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hOut,pos);
}
void ShowDisc(char disc,int position)//打印效果函数,disc是判断打印在那个区域,position是控制打印在哪一列
{
int x=0;
switch(disc)
{
case 'A':x=0;break;
case 'B':x=40;break;
case 'C':x=80;break;
}
switch(position)
{
case 1:One(x);break;
case 2:Two(x);break;
case 3:Three(x);break;
case 4:Four(x);break;
}
}
void Delete(int position)//输出空格函数
{
switch(position)
{
case 1:gotoxy(15,8);break;
case 2:gotoxy(15,10);break;
case 3:gotoxy(15,12);break;
case 4:gotoxy(15,14);break;
}
printf(" ");
}
void Four(int x)//输出4个*的函数,x是控制行数
{
char *Disc="* * * *";
gotoxy(17+x,14);
printf("%s",Disc);
}
void Three(int x)
{
char *Disc="* * *";
gotoxy(18+x,12);
printf("%s",Disc);
}
void Two(int x)
{
char *Disc="* *";
gotoxy(19+x,10);
printf("%s",Disc);
}
void One(int x)
{
char *Disc="*";
gotoxy(20+x,8);
printf("%s",Disc);
}
void Init()//初始化函数
{
//A
for(int i=1;i<=4;i++)
ShowDisc('A',i);
gotoxy(20,16);
puts("A");
//B
gotoxy(60,16);
puts("B");
//C
gotoxy(100,16);
puts("C");
gotoxy(43,22);
system("PAUSE");
Hannuota(4,'A','B','C');
}
void Hannuota(int layers,char a,char b,char c)//汉诺塔实现递归调用
{
if(layers==1)
Move(a,1,c);
else
{
Hannuota(layers-1,a,c,b);
Move(a,layers,c);
Hannuota(layers-1,b,a,c);
}
}
void Move(char begin,int position,char end)//打印效果
{
Delete(position);
ShowDisc(end,position);
sum++;
gotoxy(43,20);
printf("移动次数:%d",sum);
gotoxy(43,22);
system("PAUSE");
}
4阶汉诺塔(动态)
需积分: 47 10 浏览量
2019-06-27
21:02:34
上传
评论 1
收藏 1.08MB ZIP 举报
telz
- 粉丝: 0
- 资源: 5
最新资源
- 基于matlab实现夜间车牌识别程序(1).rar
- 基于matlab实现无线传感器网络无需测距定位算法matlab源代码 包括apit,dv-hop,amorphous在内的共7个
- 基于python的yolov5实现的旋转目标检测
- 基于matlab实现无线传感器网络 CAB定位仿真程序 这是无线传感器节点定位CAB算法的仿真程序,由matlab完成.rar
- 基于matlab实现图像处理,本程序使用背景差分法对来往车辆进行检测和跟踪.rar
- 基于matlab实现视频监控中车型识别代码,自己写的,希望和大家多多交流.rar
- springcodespringcodespringcodespringcode
- 基于matlab实现权值的MAXDEV无线传感器网络定位算法研究 MAXDEV 无线传感器 定位 算法.rar
- sdk.config
- 基于matlab实现配电网三相潮流计算方法,对几种常用的配电网潮流计算方法进行了对比分析.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈