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

📄 迷宫探路iv(递归算法)_数据结构与算法_数据结构算法_c语言_c 语言之家.htm

📁 严蔚民版的数据结构的完整课件
💻 HTM
📖 第 1 页 / 共 3 页
字号:
              <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&amp;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日&nbsp;&nbsp;出处:clean&nbsp;&nbsp;作者:clean&nbsp;&nbsp;已经有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 
                              &lt;stdlib.h&gt;<BR>#include 
                              &lt;time.h&gt;<BR>#include 
                              &lt;math.h&gt;<BR>#include 
                              &lt;stdio.h&gt;<BR>#include 
                              &lt;graphics.h&gt;<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>&nbsp;&nbsp;&nbsp; 
                              int dir;<BR>&nbsp;&nbsp;&nbsp; int 
                              ri;<BR>&nbsp;&nbsp;&nbsp; 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(&amp;gdriver,&amp;gmode,"c:\\turboc2");*/<BR><BR>initgraph(&amp;gdriver,&amp;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&lt;=length;i++){<BR>&nbsp;&nbsp;&nbsp; 
                              drawman(x+road[i].rj*step,y+road[i].ri*step,len);<BR>&nbsp;&nbsp;&nbsp; 
                              delay(80000);<BR>&nbsp;&nbsp;&nbsp; 
                              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>&nbsp;&nbsp;&nbsp; int 
                              r=len/4;<BR>&nbsp;&nbsp;&nbsp; 
                              rect(x-r,y-len,x+r,y-len+2*r);<BR>&nbsp;&nbsp;&nbsp; 
                              line(x,y-len+2*r,x,y);<BR>&nbsp;&nbsp;&nbsp; 
                              line(x-len,y,x+len,y);<BR>&nbsp;&nbsp;&nbsp; 
                              line(x,y,x-len,y+len);<BR>&nbsp;&nbsp;&nbsp; 
                              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>&nbsp;&nbsp;&nbsp; int 
                              startx=x;<BR>&nbsp;&nbsp;&nbsp; int 
                              i,j;<BR>&nbsp;&nbsp;&nbsp; 
                              for(i=0;i&lt;a;i++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              for(j=0;j&lt;b;j++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(bg[i][j]==-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              rect(x,y,x+size-1,y+size-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              x+=size;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              x=startx;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              y+=size;<BR>&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp; 
                              rectangle(0,0,size*b,size*a);<BR>&nbsp;&nbsp;&nbsp; 
                              line(0,0,size,0);line(0,0,0,size);<BR>&nbsp;&nbsp;&nbsp; 
                              line(size*b,size*(a-1),size*b,size*a);<BR>&nbsp;&nbsp;&nbsp; 
                              line(size*(b-1),size*a,size*b,size*a);<BR>}<BR>/* 
                              绘制实心矩形 */<BR>void rect(int x0,int y0,int x1,int 
                              y1){<BR>&nbsp;&nbsp;&nbsp; int 
                              i,j;<BR>&nbsp;&nbsp;&nbsp; 
                              for(i=x0;i&lt;=x1;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              line(i,y0,i,y1);<BR>}<BR>/* 随机生成代表迷宫地图的数组&nbsp; 
                              */<BR>void makebg(int a,int 
                              b){<BR>&nbsp;&nbsp;&nbsp; int 
                              i,j;<BR>&nbsp;&nbsp;&nbsp; int 
                              ran;<BR>&nbsp;&nbsp;&nbsp; int direc;<BR>/* 
                              初始化迷宫地图&nbsp; */<BR>&nbsp;&nbsp;&nbsp; 
                              for(i=0;i&lt;a;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              for(j=0;j&lt;b;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              bg[i][j]=1;<BR>/* 随机生成迷宫通路&nbsp; 
                              */<BR>&nbsp;&nbsp;&nbsp; 
                              randomize();<BR>&nbsp;&nbsp;&nbsp; 
                              i=j=0;direc=2;<BR>&nbsp;&nbsp;&nbsp; 
                              while(1){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              bg[i][j]=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(i&gt;=M-1&amp;&amp;j&gt;=N-1)break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              ran=(int)rand()*4;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(ran&lt;1){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(direc!=1&amp;&amp;i&lt;a-1){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              i++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              direc=3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }&nbsp;&nbsp;&nbsp; 
                              <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else 
                              if(ran&lt;2){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(direc!=2&amp;&amp;j&gt;0){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              j--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              direc=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else 
                              if(ran&lt;3){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(direc!=3&amp;&amp;i&gt;0){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              i--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              direc=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(direc!=0&amp;&amp;j&lt;b-1){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              j++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              direc=2;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>/* 
                              随机生成迷宫其余部分&nbsp; */<BR>&nbsp;&nbsp;&nbsp; 
                              for(i=0;i&lt;a;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              for(j=0;j&lt;b;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(bg[i][j]==1){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              ran=(int)rand()*10;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(ran&lt;5)bg[i][j]=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp; 
                              for(i=0;i&lt;a;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              for(j=0;j&lt;b;j++){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(bg[i][j]==1)aa[i][j]=-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else aa[i][j]=0;<BR>&nbsp;&nbsp;&nbsp; 
                              }<BR>}<BR>int go(int i,int j,int 
                              dir){<BR>&nbsp;&nbsp;&nbsp; if(length==-1)return 
                              -1;<BR>&nbsp;&nbsp;&nbsp; 
                              if(i==M-1&amp;&amp;j==N-1)return 
                              1;<BR>&nbsp;&nbsp;&nbsp; 
                              if(dir==4){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              length--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              road[length].dir++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              go(road[length].ri,road[length].rj,road[length].dir);<BR>&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp; 
                              else{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(aa[i+di[dir&gt;[j+dj[dir&gt;==0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              &amp;&amp;i+di[dir]&gt;=0&amp;&amp;i+di[dir]&lt;M<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              &amp;&amp;j+dj[dir]&gt;=0&amp;&amp;j+dj[dir]&lt;N){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              length++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              road[length].ri=i+di[dir];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              road[length].rj=j+dj[dir];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              road[length].dir=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              aa[road[length].ri][road[length].rj]=length+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              go(road[length].ri,road[length].rj,road[length].dir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              else{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              dir++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              go(i,j,dir);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp; }<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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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 + -