人工智能梵塔问题Word文档下载推荐.docx
- 文档编号:14599318
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:11
- 大小:91.55KB
人工智能梵塔问题Word文档下载推荐.docx
《人工智能梵塔问题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《人工智能梵塔问题Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
如此“层层下放”,直到后来找到第2个僧人,让他完成将2个盘子从一个座移到另一个座,进行到此,问题就解决了。
最后找到第1个僧人,让他完成将一个盘子从一个座移动到另一个座,至此,全部工作已经完成,该烦他问题得到解决。
实验步骤
⑴主程序流程图
初始化过程
盘子数为n
结束
退出一级调用n=n+1
丁程
梵塔问题递归过程流程图
程序代码
#include<
stdio.h>
#inelude<
graphics.h>
time.h>
dos.h>
math.h>
#definePAOGAO190/*动画抛高,数值越小越高*/
#definePANHOU10
/*#definePANAMOUNT19盘子数*/
intPANAMOUNT;
typedefintpans;
typedefstructs_pillar
{
intamount;
intx,y;
panspan[20];
/*存放每个盘的代号*/
}pillars;
pillarspillar[4];
/*三个台柱*/
intmovecount=O;
/*移动计数*/
voiddrawpillar(pillarsp);
voidinit();
/*初始化函数*/
voiddrawmat(char*mat,intmatsize,intx,inty,intcolor);
/*点陈汉字*/voiddrawpan(pansp,intx,inty);
voidzimu();
/*显示字幕*/
voiddrawpps();
/*画装盘的台柱*/
voidhanoi();
/*主算法*/
voidhanoi(intn,charone,chartwo,charthree);
voidsdelay(intdelay_t);
/*函数申明*/
voidfinish();
/*完成!
*/
voidmain(void)/*主函数*/
printf("
\n\tpleaseinputn(*=19):
"
);
/*输入要演示的盘子数*/
scanf("
%d"
&
PANAMOUNT);
if(PANAMOUNT<
1||PANAMOUNT>
19)/*越界的话n当19处理*/PANAMOUNT=19;
init();
drawpps();
hanoi(PANAMOUNT,'
a'
'
b'
c'
finish();
}
voidinit()/*初始化函数*/
intgd=DETECT,gm;
inti,n,color;
clrscr();
initgraph(&
gd,&
gm,"
c:
\\tc"
cleardevice();
pillar[1].amount=PANAMOUNT;
pillar[1].x=105;
pillar[1].y=405;
for(i=1;
i<
=pillar[1].amount;
i++)
pillar[1].pan[i]=pillar[1].amount-i+1;
pillar[2].amount=0;
pillar[2].x=320;
pillar[2].y=405;
pillar[3].amount=0;
pillar[3].x=527;
pillar[3].y=405;
setcolor(YELLOW);
/*柱座标记*/
settextstyle(0,0,2);
outtextxy(105,418,"
A"
outtextxy(320,418,"
B"
outtextxy(527,418,"
C"
/*画框*/
setlinestyle(SOLID_LINE,O,NORM_WIDTH);
line(0,0,0,479);
line(0,0,639,0);
line(639,0,639,479);
line(0,479,639,479);
/*线上字*/
line(0,PAOGAO-PANHOU-40,450,PAOGAO-PANHOU-40);
/*黄金线*/settextstyle(0,0,1);
outtextxy(250,PAOGAO-PANHOU-50,"
PressANYKeytoEXIT!
zimu();
voiddrawpillar(pillarsp)/*画柱*/
intx,y,mount;
x=p.x;
y=p.y;
mount=p.amount;
setfillstyle(SOLID_FILL,BROWN);
bar(x,(y-mount*PANHOU-2O),x+5,y);
bar(x-45,y,x+55,y+5);
voiddrawmat(char*mat,intmatsize,intx,inty,intcolor)
/*依次:
字模指针、点阵大小、起始坐标(x,y)、颜色*/
{inti,j,k,n;
n=(matsize-1)/8+1;
for(j=0;
j<
matsize;
j++)
for(i=0;
n;
for(k=0;
k<
8;
k++)
if(mat『n+i]&
(0x80»
k))/*测试为1的位则显示*/
putpixel(x+i*8+k,y+j,color);
voiddrawpan(pansp,intx,inty)
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(x-(5+5*p),y-PANHOU+1,x+(5+5*p),y);
setcolor(BLACK);
line(x-(5+5*p),y,x+(5+5*p),y);
line(x-(5+5*p),y+1,x+(5+5*p),y+1);
voidclearpan(pansp,intx,inty)
setfillstyle(SOLID_FILL,BLACK);
bar(x-(5+5*p),y-PANHOU,x+(5+5*p),y);
voiddrawpps()/*画装盘的台柱*/
pillarsp;
inti,j;
=3;
p=pillar[i];
x=p.x;
y=p.y;
mount=p.amount;
drawpillar(p);
/*画台柱*/
for(j=1;
j<
=mount;
drawpan(p.pan[j],x,y-PANHOU*(j-1));
voidhanoi(intn,charone,chartwo,charthree)
voidmove(charx,chary);
/*声明*/
if(n==1)
move(one,three);
else
hanoi(n-1,one,three,two);
hanoi(n-1,two,one,three);
voidmove(charx,chary)
voidclearprocess();
/*申明函数*/
voidaction();
/*申明移动动画函数*/
intifrom,ito;
pansdata;
intmountf,mountt;
chara[1];
charb[1];
a[0]=x;
a[1]='
\O:
b[O]=y;
b[1]='
ifrom=x-96;
ito=y-96;
mountf=pillar[ifrom].amount;
/*数量*/
mountt=pillar[ito].amount;
data=pillar[ifrom].pan[mountf];
pillar[ifrom].amount--;
/*出栈*/
sdelay(6);
/*暂停屏幕*/
if(movecount>
=15)clearprocess();
/*清除步骤提示*/movecount=movecount%15+1;
/*模20+1*/setcolor(RED);
/*输出移动过程*/settextstyle(TRIPLEX_FONT,HORIZ_DIR,1);
outtextxy(560,30+movecount*10,a);
outtextxy(580,30+movecount*10,"
--->
outtextxy(620,30+movecount*10,b);
/*涂黑_重画*/bar(3,pillar[1].y-PANHOU*19-20,584,412);
/*重画*/
action(data,pillar[ifrom],pillar[ito]);
/*此处添加动画函数*/
pillar[ito].amount++;
/*入栈*/
mountt=pillar[ito].amount;
/*刷新数量*/
pillar[ito].pan[mountt]=data;
voidclearprocess()
inti;
=16;
bar(545,30+i*10,638,40+i*10);
sdelay
(1);
/*动画延迟n个(1/18.2)秒*/
整数1代表(1/18.2)秒*/
voidsdelay(intdelay_t)
clock_tstart_time;
start_time=clock();
while((
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 问题
![提示](https://static.bdocx.com/images/bang_tan.gif)