📄 迷宫探路iv(递归算法)_数据结构与算法_数据结构算法_c语言_c 语言之家.htm
字号:
<TR>
<TD align=middle
background="迷宫探路IV(递归算法)_数据结构与算法_数据结构算法_C语言_C 语言之家.files/002.jpg"
borderColor=#e2ca9f vAlign=top width="69%">
<TABLE align=center border=0 cellPadding=0 cellSpacing=0
width="100%">
<TBODY>
<TR>
<TD height=40 width="100%"></TD></TR>
<TR>
<TD>
<FORM action=Readnews.asp?newsid=2585&id2=2585
method=post name=form1>
<CENTER><!-- <input type=submit name=aa value="点击关闭浮动图标" width=20 title="点击广告支持本站">--></CENTER></FORM></TD></TR>
<TR>
<TD align=middle bgColor=#dddddd height=20
style="FONT-SIZE: 18px" vAlign=bottom
width="85%"><STRONG><FONT color=#003399
size=4><B>迷宫探路IV(递归算法) </B></FONT></STRONG></TD><BR></TR>
<TR>
<TD align=middle width="100%"><BR></TD></TR>
<TR>
<TD align=middle style="FONT-SIZE: 9pt"
width="100%">发表日期:2003年10月17日 出处:clean 作者:clean 已经有3164位读者读过此文</TD></TR>
<TR>
<TD align=middle width="100%"><!--下面的这一句是设置阅读文本区的宽度-->
<TABLE align=center border=0 cellPadding=0 cellSpacing=0
style="TABLE-LAYOUT: fixed" width="90%">
<TBODY>
<TR>
<TD align=middle width="100%"></TD></TR>
<TR>
<TD style="WORD-WRAP: break-word"><FONT
class=news><BR>
<P>/* 迷宫探路(recursive)*/<BR>/* recursivemaze.c
*/<BR>/* 2003-10-16 */<BR>#include
<stdlib.h><BR>#include
<time.h><BR>#include
<math.h><BR>#include
<stdio.h><BR>#include
<graphics.h><BR>#define N 22<BR>#define M
22<BR>#define MAXLEN M*N<BR>int bg[M][N];<BR>int
aa[M][N];<BR>struct pace{<BR>
int dir;<BR> int
ri;<BR> int
rj;<BR>}road[MAXLEN];<BR>int length=0;<BR>int
dj[]={1,0,-1,0};<BR>int di[]={0,1,0,-1};<BR>void
makebg(int,int);<BR>void
drawbg(int[][],int,int,int,int,int);<BR>void
drawman(int,int,int);<BR>void
rect(int,int,int,int);<BR>int go(int ,int
,int);<BR>void main(){/* main()开始 */<BR>int
step=20;<BR>int len=10;<BR>int size=20;<BR>int
x=0,y=0;<BR>int i=0,j=0;<BR>int
gdriver=DETECT,gmode;<BR>makebg(M,N);<BR>/*
registerbgidriver(EGAVGA_driver);<BR>initgraph(&gdriver,&gmode,"c:\\turboc2");*/<BR><BR>initgraph(&gdriver,&gmode,"c:\\tc20\\bgi");
</P>
<P>cleardevice();<BR>setwritemode(XOR_PUT);<BR>settextstyle(1,0,3);<BR>setcolor(GREEN);<BR>outtextxy(100,180,"RECURSIVE
MAZE");<BR>setcolor(BLUE);<BR>setfillstyle(LINE_FILL,BLUE);<BR>/*drawbg(bg,M,N,size,0,0);*/<BR>drawbg(aa,M,N,size,0,0);<BR>setcolor(WHITE);<BR>x+=len;y+=len;<BR>drawman(x,y,len);<BR>/*
电脑控制
*/<BR>aa[0][0]=1;<BR>road[0].ri=0;<BR>road[0].rj=0;<BR>road[0].dir=0;<BR>go(0,0,0);<BR>/*
output
*/<BR>getch();<BR>drawman(x,y,len);<BR>for(i=0;i<=length;i++){<BR>
drawman(x+road[i].rj*step,y+road[i].ri*step,len);<BR>
delay(80000);<BR>
drawman(x+road[i].rj*step,y+road[i].ri*step,len);<BR>}<BR>i--;<BR>drawman(x+road[i].rj*step,y+road[i].ri*step,len);<BR>getch();<BR>closegraph();<BR>}<BR>/*
main()结束 */<BR>/* 绘制小人 */<BR>void drawman(int
x,int y,int len){<BR> int
r=len/4;<BR>
rect(x-r,y-len,x+r,y-len+2*r);<BR>
line(x,y-len+2*r,x,y);<BR>
line(x-len,y,x+len,y);<BR>
line(x,y,x-len,y+len);<BR>
line(x,y,x+len,y+len);<BR>}<BR>/* 绘制迷宫地图
*/<BR>void drawbg(int bg[][N],int a,int b,int
size,int x,int y){<BR> int
startx=x;<BR> int
i,j;<BR>
for(i=0;i<a;i++){<BR>
for(j=0;j<b;j++){<BR>
if(bg[i][j]==-1)<BR>
rect(x,y,x+size-1,y+size-1);<BR>
x+=size;<BR>
}<BR>
x=startx;<BR>
y+=size;<BR>
}<BR>
rectangle(0,0,size*b,size*a);<BR>
line(0,0,size,0);line(0,0,0,size);<BR>
line(size*b,size*(a-1),size*b,size*a);<BR>
line(size*(b-1),size*a,size*b,size*a);<BR>}<BR>/*
绘制实心矩形 */<BR>void rect(int x0,int y0,int x1,int
y1){<BR> int
i,j;<BR>
for(i=x0;i<=x1;i++)<BR>
line(i,y0,i,y1);<BR>}<BR>/* 随机生成代表迷宫地图的数组
*/<BR>void makebg(int a,int
b){<BR> int
i,j;<BR> int
ran;<BR> int direc;<BR>/*
初始化迷宫地图 */<BR>
for(i=0;i<a;i++)<BR>
for(j=0;j<b;j++)<BR>
bg[i][j]=1;<BR>/* 随机生成迷宫通路
*/<BR>
randomize();<BR>
i=j=0;direc=2;<BR>
while(1){<BR>
bg[i][j]=0;<BR>
if(i>=M-1&&j>=N-1)break;<BR>
ran=(int)rand()*4;<BR>
if(ran<1){<BR>
if(direc!=1&&i<a-1){<BR>
i++;<BR>
direc=3;<BR>
}<BR>
}
<BR>
else
if(ran<2){<BR>
if(direc!=2&&j>0){<BR>
j--;<BR>
direc=0;<BR>
}<BR>
}<BR>
else
if(ran<3){<BR>
if(direc!=3&&i>0){<BR>
i--;<BR>
direc=1;<BR>
}<BR>
}<BR>
else
{<BR>
if(direc!=0&&j<b-1){<BR>
j++;<BR>
direc=2;
<BR>
}<BR>
}<BR> }<BR>/*
随机生成迷宫其余部分 */<BR>
for(i=0;i<a;i++)<BR>
for(j=0;j<b;j++)<BR>
if(bg[i][j]==1){<BR>
ran=(int)rand()*10;<BR>
if(ran<5)bg[i][j]=0;<BR>
}<BR>
for(i=0;i<a;i++)<BR>
for(j=0;j<b;j++){<BR>
if(bg[i][j]==1)aa[i][j]=-1;<BR>
else aa[i][j]=0;<BR>
}<BR>}<BR>int go(int i,int j,int
dir){<BR> if(length==-1)return
-1;<BR>
if(i==M-1&&j==N-1)return
1;<BR>
if(dir==4){<BR>
length--;<BR>
road[length].dir++;<BR>
go(road[length].ri,road[length].rj,road[length].dir);<BR>
}<BR>
else{<BR>
if(aa[i+di[dir>[j+dj[dir>==0<BR>
&&i+di[dir]>=0&&i+di[dir]<M<BR>
&&j+dj[dir]>=0&&j+dj[dir]<N){<BR>
length++;<BR>
road[length].ri=i+di[dir];<BR>
road[length].rj=j+dj[dir];<BR>
road[length].dir=0;<BR>
aa[road[length].ri][road[length].rj]=length+1;<BR>
go(road[length].ri,road[length].rj,road[length].dir);<BR>
}<BR>
else{<BR>
dir++;<BR>
go(i,j,dir);<BR>
}<BR> }<BR>}
</P><BR></FONT></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD height=25 width="100%">
<DIV align=center></DIV></TD></TR>
<TR>
<TD height=20 width=255><A class=bottom
href="http://www.cstudyhome.com/wenzhang06/review.asp?NewsID=2585"
target=_blank> <IMG
border=0 height=18
src="迷宫探路IV(递归算法)_数据结构与算法_数据结构算法_C语言_C 语言之家.files/icon1.gif"
width=18> <FONT color=blue>发表评论</FONT></A> </TD></TR>
<TR>
<TD width="100%">
<HR SIZE=1>
</TD></TR>
<TR>
<TD height=8></TD></TR>
<TR>
<TD height=18 width="100%"><B>相关专题:</B>
<TR>
<TD width="100%">
<HR SIZE=1>
</TD></TR>
<TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -