2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  目 錄</b></p><p><b>  1 課程設(shè)計(jì)1</b></p><p>  1.1 問(wèn)題描述1</p><p>  1.2 需求分析2</p><p>  1.3 概要設(shè)計(jì)3</p><p><b>  1.4 流

2、程圖4</b></p><p>  1.5 詳細(xì)設(shè)計(jì)5</p><p>  1.6 調(diào)試分析8</p><p>  1.7 運(yùn)行結(jié)果及分析8</p><p>  2 課程設(shè)計(jì)個(gè)人總結(jié)11</p><p><b>  附錄12</b></p><p>

3、  《數(shù)據(jù)結(jié)構(gòu)應(yīng)用》評(píng)分表18</p><p><b>  1.1問(wèn)題描述:</b></p><p>  a.問(wèn)題描述:以一個(gè)m * n的長(zhǎng)方陣表示迷宮,0和1分別表示迷宮的通路和障礙。設(shè)計(jì)一個(gè)程序,對(duì)任意設(shè)定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結(jié)論。</p><p><b>  b.基本要求 :</b>

4、</p><p>  (1)實(shí)現(xiàn)一個(gè)以鏈表做存儲(chǔ)的棧類型,然后編寫一個(gè)求解迷宮的非遞歸程序。求的通路以三元組(i,j,d)的形式輸出,其中:(i,j)指示迷宮中的一個(gè)坐標(biāo),d表示走到下一坐標(biāo)的方向。如:對(duì)于下列數(shù)據(jù)的迷宮,輸出一條通路:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2)……。</p><p> ?。?)編寫遞歸形式的算法,求得迷宮中所有可能的道路

5、;</p><p> ?。?)以方陣形式輸出迷宮及其到道路(選做)</p><p>  c.測(cè)試數(shù)據(jù):迷宮的測(cè)試數(shù)據(jù)如下:左上角(1,1)為入口,右下角(8,9)為出口。</p><p>  d.實(shí)現(xiàn)提示:計(jì)算機(jī)解迷宮通常用的是“窮舉求解”方法,即從入口出發(fā),順著米一個(gè)方向進(jìn)行探索,若能走通,則繼續(xù)往前進(jìn);否則沿著原路退回,換一個(gè)方向繼續(xù)探索,直至出口位置,求的一條

6、通路。假如所有的可能的通路都探索到而未能到出口,則所設(shè)定的迷宮沒有通路??梢远S數(shù)組存儲(chǔ)迷宮數(shù)據(jù),通常設(shè)定入口點(diǎn)的下標(biāo)為(1,1),出口點(diǎn)的下標(biāo)為(n,n)。為處理器方便起見,可在迷宮的四周加上一圈障礙 。對(duì)于迷宮中任一位置,均可約定有東、西、南、北四個(gè)方向可通。</p><p><b>  1.2需求分析:</b></p><p>  本課程設(shè)計(jì)是解決迷宮求解的問(wèn)題

7、,從入口出發(fā),順某一方向向前探索,若能走通,則繼續(xù)往前走;否則沿原路退回,換一個(gè)方向再繼續(xù)探索,直至所有可能的通路都探索到為止。為了保證在任何位置上都能沿原路退回,顯然需要用一個(gè)后進(jìn)先出的結(jié)構(gòu)來(lái)保存從入口到當(dāng)前位置的路徑。因此,在求迷宮通路的算法中要應(yīng)用“?!钡乃枷爰僭O(shè)“當(dāng)前位置”指的是“在搜索過(guò)程中的某一時(shí)刻所在圖中某個(gè)方塊位置”,則求迷宮中一條路徑的算法的基本思想是:若當(dāng)前位置“可通”,則納入“當(dāng)前路徑”,并繼續(xù)朝“下一位置”探索,

8、即切換“下一位置”為“當(dāng)前位置”,如此重復(fù)直至到達(dá)出口;若當(dāng)前位置“不可通”,則應(yīng)順著“來(lái)向”退回到“前一通道塊”,然后朝著除“來(lái)向”之外的其他方向繼續(xù)探索;若該通道塊的四周4個(gè)方塊均“不可通”,則應(yīng)從“當(dāng)前路徑”上刪除該通道塊。所謂“下一位置”指的是當(dāng)前位置四周4個(gè)方向(上、下、左、右)上相鄰的方塊。假設(shè)以棧記錄“當(dāng)前路徑”,則棧頂中存放的是“當(dāng)前路徑上最后一個(gè)通道塊”。由此,“納入路徑”的操作即為“當(dāng)前位置入?!保弧皬漠?dāng)前路徑上刪除

9、前一通道塊”的操作即為“出?!?。</p><p><b>  問(wèn)題分析:</b></p><p><b>  1.迷宮的建立:</b></p><p>  迷宮中存在通路和障礙,為了方便迷宮的創(chuàng)建,可用0表示通路,用1表示障礙,這樣迷宮就可以用0、1矩陣來(lái)描述,</p><p><b> 

10、 2.迷宮的存儲(chǔ):</b></p><p>  迷宮是一個(gè)矩形區(qū)域,可以使用二維數(shù)組表示迷宮,這樣迷宮的每一個(gè)位置都可以用其行列號(hào)來(lái)唯一指定,但是二維數(shù)組不能動(dòng)態(tài)定義其大小,我們可以考慮先定義一個(gè)較大的二維數(shù)組maze[M+2][N+2],然后用它的前m行n列來(lái)存放元素,即可得到一個(gè)m×n的二維數(shù)組,這樣(0,0)表示迷宮入口位置,(m-1,n-1)表示迷宮出口位置。</p>

11、<p>  注:其中M,N分別表示迷宮最大行、列數(shù),本程序M、N的缺省值為39、39,當(dāng)然,用戶也可根據(jù)需要,調(diào)整其大小。</p><p>  3.迷宮路徑的搜索:</p><p>  首先從迷宮的入口開始,如果該位置就是迷宮出口,則已經(jīng)找到了一條路徑,搜索工作結(jié)束。否則搜索其上、下、左、右位置是否是障礙,若不是障礙,就移動(dòng)到該位置,然后再?gòu)脑撐恢瞄_始搜索通往出口的路徑;若是障礙

12、就選擇另一個(gè)相鄰的位置,并從它開始搜索路徑。為防止搜索重復(fù)出現(xiàn),則將已搜索過(guò)的位置標(biāo)記為2,同時(shí)保留搜索痕跡,在考慮進(jìn)入下一個(gè)位置搜索之前,將當(dāng)前位置保存在一個(gè)隊(duì)列中,如果所有相鄰的非障礙位置均被搜索過(guò),且未找到通往出口的路徑,則表明不存在從入口到出口的路徑。這實(shí)現(xiàn)的是廣度優(yōu)先遍歷的算法,如果找到路徑,則為最短路徑。</p><p>  以矩陣 0 0 1 0 1 為例,來(lái)示范一下</p><

13、;p><b>  1 0 0 1 0</b></p><p><b>  1 0 0 0 1</b></p><p><b>  0 0 1 0 0</b></p><p>  首先,將位置(0,0)(序號(hào)0)放入隊(duì)列中,其前節(jié)點(diǎn)為空,從它開始搜索,其標(biāo)記變?yōu)?,由于其只有一個(gè)非障礙位置,所以接

14、下來(lái)移動(dòng)到(0,1)(序號(hào)1),其前節(jié)點(diǎn)序號(hào)為0,標(biāo)記變?yōu)?,然后從(0,1)移動(dòng)到(1,1)(序號(hào)2),放入隊(duì)列中,其前節(jié)點(diǎn)序號(hào)為1,(1,1)存在(1,2)(序號(hào)3)、(2,1)(序號(hào)4)兩個(gè)可移動(dòng)位置,其前節(jié)點(diǎn)序號(hào)均為2.對(duì)于每一個(gè)非障礙位置,它的相鄰非障礙節(jié)點(diǎn)均入隊(duì)列,且它們的前節(jié)點(diǎn)序號(hào)均為該位置的序號(hào),所以如果存在路徑,則從出口處節(jié)點(diǎn)的位置,逆序就可以找到其從出口到入口的通路。</p><p><

15、b>  如下表所示:</b></p><p>  0 1 2 3 4 5 6 7 8 9 10</p><p>  由此可以看出,得到最短路徑:(3,4)(3,3)(2,3)(2,2)(1,2)(1,1)(0,1)(0,0)</p><p><

16、b>  1.3 概要設(shè)計(jì)</b></p><p>  1.①構(gòu)建一個(gè)二維數(shù)組maze[M+2][N+2]用于存儲(chǔ)迷宮矩陣</p><p>  ②自動(dòng)或手動(dòng)生成迷宮,即為二維數(shù)組maze[M+2][N+2]賦值</p><p>  ③構(gòu)建一個(gè)隊(duì)列用于存儲(chǔ)迷宮路徑</p><p> ?、芙⒚詫m節(jié)點(diǎn)struct point,用于

17、存儲(chǔ)迷宮中每個(gè)節(jié)點(diǎn)的訪問(wèn)情況</p><p><b> ?、輰?shí)現(xiàn)搜索算法</b></p><p> ?、奁聊簧巷@示操作菜單</p><p>  2.本程序包含10個(gè)函數(shù):</p><p>  (1)主函數(shù) main()</p><p>  (2)手動(dòng)生成迷宮函數(shù) shoudong_maze()&l

18、t;/p><p>  (3)自動(dòng)生成迷宮函數(shù) zidong_maze()</p><p>  (4)將迷宮打印成圖形 print_maze()</p><p>  (5)打印迷宮路徑 (若存在路徑) result_maze()</p><p>  (6)入隊(duì) enqueue()</p><p>  (7)出隊(duì) dequeu

19、e()</p><p>  (8)判斷隊(duì)列是否為空 is_empty()</p><p>  (9)訪問(wèn)節(jié)點(diǎn) visit()</p><p>  (10)搜索迷宮路徑 mgpath()</p><p><b>  1.4流程圖:</b></p><p><b>  1.5 詳細(xì)設(shè)計(jì)<

20、;/b></p><p>  實(shí)現(xiàn)概要設(shè)計(jì)中定義的所有數(shù)據(jù)類型及操作的偽代碼算法</p><p><b>  節(jié)點(diǎn)類型和指針類型</b></p><p>  迷宮矩陣類型:int maze[M+2][N+2];為方便操作使其為全局變量</p><p>  迷宮中節(jié)點(diǎn)類型及隊(duì)列類型:struct point{int

21、row,col,predecessor} que[512]</p><p><b>  迷宮的操作</b></p><p><b>  (1)手動(dòng)生成迷宮</b></p><p>  void shoudong_maze(int m,int n)</p><p>  {定義i,j為循環(huán)變量</

22、p><p><b>  for(i<=m)</b></p><p><b>  for(j<=n)</b></p><p>  輸入maze[i][j]的值</p><p><b>  }</b></p><p><b>  (2)自動(dòng)

23、生成迷宮</b></p><p>  void zidong_maze(int m,int n)</p><p>  {定義i,j為循環(huán)變量</p><p><b>  for(i<=m)</b></p><p><b>  for(j<=n)</b></p>

24、<p>  maze[i][j]=rand()%2 //由于rand()產(chǎn)生的隨機(jī)數(shù)是從0到RAND_MAX,RAND_MAX是定義在stdlib.h中的,其值至少為32767),要產(chǎn)生從X到Y(jié)的數(shù),只需要這樣寫:k=rand()%(Y-X+1)+X;</p><p><b>  }</b></p><p><b>  (3)打印迷宮圖形<

25、;/b></p><p>  void print_maze(int m,int n)</p><p>  {用i,j循環(huán)變量,將maze[i][j]輸出 □、■}</p><p><b>  (4)打印迷宮路徑</b></p><p>  void result_maze(int m,int n)</p&g

26、t;<p>  {用i,j循環(huán)變量,將maze[i][j]輸出 □、■、☆}</p><p><b>  (5)搜索迷宮路徑</b></p><p>  ①迷宮中隊(duì)列入隊(duì)操作</p><p>  void enqueue(struct point p)</p><p>  {將p放入隊(duì)尾,tail++}&l

27、t;/p><p>  ②迷宮中隊(duì)列出隊(duì)操作</p><p>  struct point dequeue(struct point p)</p><p>  {head++,返回que[head-1]}</p><p><b> ?、叟袛嚓?duì)列是否為空</b></p><p>  int is_empt

28、y()</p><p>  {返回head==tail的值,當(dāng)隊(duì)列為空時(shí),返回0}</p><p> ?、茉L問(wèn)迷宮矩陣中節(jié)點(diǎn)</p><p>  void visit(int row,int col,int maze[41][41])</p><p>  {建立新的隊(duì)列節(jié)點(diǎn)visit_point,將其值分別賦為row,col,head-1,m

29、aze[row][col]=2,表示該節(jié)點(diǎn)以被訪問(wèn)過(guò);調(diào)用enqueue(visit_point),將該節(jié)點(diǎn)入隊(duì)}</p><p><b> ?、萋窂角蠼?lt;/b></p><p>  void mgpath(int maze[41][41],int m,int n)</p><p>  {先定義入口節(jié)點(diǎn)為struct point p={0,0,

30、-1},從maze[0][0]開始訪問(wèn)。如果入口處即為障礙,則此迷宮無(wú)解,返回0 ,程序結(jié)束。否則訪問(wèn)入口節(jié)點(diǎn),將入口節(jié)點(diǎn)標(biāo)記為訪問(wèn)過(guò)maze[p.row][p.col]=2,調(diào)用函數(shù)enqueue(p)將該節(jié)點(diǎn)入隊(duì)。</p><p>  判斷隊(duì)列是否為空,當(dāng)隊(duì)列不為空時(shí),則運(yùn)行以下操作:</p><p>  { 調(diào)用dequeue()函數(shù),將隊(duì)頭元素返回給p,</p>&l

31、t;p>  如果p.row==m-1且p.col==n-1,即到達(dá)出口節(jié)點(diǎn),即找到了路徑,結(jié)束</p><p>  如果p.col+1<n且maze[p.row][p.col+1]==0,說(shuō)明未到迷宮右邊界,且其右方有通路,則visit(p.row,p.col+1,maze),將右邊節(jié)點(diǎn)入隊(duì)標(biāo)記已訪問(wèn)</p><p>  如果p.row+1<m且maze[p.row+1]

32、[p.col]==0,說(shuō)明未到迷宮下邊界,且其下方有通路,則visit(p.row+1,p.col,maze),將下方節(jié)點(diǎn)入隊(duì)標(biāo)記已訪問(wèn)</p><p>  如果p.col-1>0且maze[p.row][p.col-1]==0,說(shuō)明未到迷宮左邊界,且其左方有通路,則visit(p.row,p.col-1,maze),將左方節(jié)點(diǎn)入隊(duì)標(biāo)記已訪問(wèn)</p><p>  如果p.row-1&

33、gt;0且maze[p.row-1][p.col]==0,說(shuō)明未到迷宮上邊界,且其上方有通路,則visit(p.row,p.col+1,maze),將上方節(jié)點(diǎn)入隊(duì)標(biāo)記已訪問(wèn)</p><p><b>  }</b></p><p>  訪問(wèn)到出口(找到路徑)即p.row==m-1且p.col==n-1,則逆序?qū)⒙窂綐?biāo)記為3即maze[p.row][p.col]==3;&

34、lt;/p><p>  while(p.predecessor!=-1)</p><p>  {p=queue[p.predecessor]; maze[p.row][p.col]==3;}</p><p>  最后將路徑圖形打印出來(lái)。</p><p><b>  3.菜單選擇</b></p><p>

35、;  while(cycle!=(-1))</p><p>  手動(dòng)生成迷宮 請(qǐng)按:1</p><p>  自動(dòng)生成迷宮 請(qǐng)按:2</p><p>  退出 請(qǐng)按:3</p><p>  scanf("%d",&i);</p><p><b>  switch

36、(i)</b></p><p>  { case 1:請(qǐng)輸入行列數(shù)(如果超出預(yù)設(shè)范圍則提示重新輸入) </p><p>  shoudong_maze(m,n);</p><p>  print_maze(m,n);</p><p>  mgpath(maze,m,n);</p><p>  if(X!=0

37、) result_maze(m,n);</p><p>  case 2 :請(qǐng)輸入行列數(shù)(如果超出預(yù)設(shè)范圍則提示重新輸入)</p><p>  zidong_maze(m,n);</p><p>  print_maze(m,n);</p><p>  mgpath(maze,m,n);</p><p>  if(X!

38、=0) result_maze(m,n);</p><p>  case 3:cycle=(-1); break;</p><p><b>  }</b></p><p>  注:具體源代碼見附錄</p><p><b>  1.6調(diào)試分析</b></p><p>  1.在

39、調(diào)試過(guò)程中,首先使用的是棧進(jìn)行存儲(chǔ),但是產(chǎn)生的路徑是多條或不是最短路徑,所以通過(guò)算法比較,改用此算法</p><p>  2.調(diào)試過(guò)程出現(xiàn)了最多60個(gè)錯(cuò)誤。后經(jīng)多次調(diào)試檢查,發(fā)現(xiàn)有些格式問(wèn)題沒有注意</p><p>  比如函數(shù)括號(hào)的放置等。</p><p>  1.7 運(yùn)行結(jié)果及分析</p><p><b>  1.手動(dòng)輸入迷宮&

40、lt;/b></p><p><b>  2.自動(dòng)輸入迷宮</b></p><p>  第二部分 課程設(shè)計(jì)總結(jié)</p><p>  通過(guò)這段時(shí)間的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),本人對(duì)計(jì)算機(jī)的應(yīng)用,數(shù)據(jù)結(jié)構(gòu)的作用以及C語(yǔ)言的使用都有了更深的了解。尤其是C語(yǔ)言的進(jìn)步讓我深刻的感受到任何所學(xué)的知識(shí)都需要實(shí)踐,沒有實(shí)踐就無(wú)法真正理解這些知識(shí)以及掌握它們,

41、使其成為自己的財(cái)富。在理論學(xué)習(xí)和上機(jī)實(shí)踐的各個(gè)環(huán)節(jié)中,通過(guò)自主學(xué)習(xí)和認(rèn)真聽老師講課分析,我收獲了不少。當(dāng)然也遇到不少的問(wèn)題,也正是因?yàn)檫@些問(wèn)題引發(fā)的思考給我?guī)Я耸斋@。從當(dāng)初不喜歡上機(jī)寫程序到現(xiàn)在能主動(dòng)寫程序,從當(dāng)初拿著程序不只如何下手到現(xiàn)在知道如何分析問(wèn)題,如何用專業(yè)知識(shí)解決實(shí)際問(wèn)題的轉(zhuǎn)變,我發(fā)現(xiàn)無(wú)論是專業(yè)知識(shí)還是動(dòng)手能力,自己都有很大程度的提高。在這段時(shí)間里,我對(duì)for、while等的循環(huán)函數(shù)用法更加熟悉,逐漸形成了較好的編程習(xí)慣。在

42、老師的指導(dǎo)幫助下,同學(xué)們課余時(shí)間的討論中,這些問(wèn)題都一一得到了解決。在程序的調(diào)試能力上,無(wú)形中得到了許多的提高。例如:頭文件的使用,變量和數(shù)組的范圍問(wèn)題,定義變量時(shí)出現(xiàn)的問(wèn)題等等。</p><p>  在實(shí)際的上機(jī)操作過(guò)程中,不僅是讓我們了解數(shù)據(jù)結(jié)構(gòu)的理論知識(shí),更重要的是培養(yǎng)解決實(shí)際問(wèn)題的能力,所以相信通過(guò)此次實(shí)習(xí)可以提高我們分析設(shè)計(jì)能力和編程能力,為后續(xù)課程的學(xué)習(xí)及實(shí)踐打下良好的基礎(chǔ)。時(shí)間過(guò)得真快,大學(xué)生活不知

43、不覺就走過(guò)了一學(xué)期,這一學(xué)期的大學(xué)學(xué)習(xí)和課程實(shí)踐階段的提高,使我們本身知識(shí)得到提高的同時(shí),也增強(qiáng)了我們對(duì)未來(lái)工作的信心,我們相信自己未來(lái)兩年半的學(xué)習(xí)更使我們有能力勝任將來(lái)的工作。</p><p><b>  附錄:</b></p><p>  #include<stdlib.h></p><p>  #include<stdi

44、o.h></p><p>  #define N 39</p><p>  #define M 39</p><p><b>  int X;</b></p><p>  int maze[N+2][M+2];</p><p>  struct point{</p><p

45、>  int row,col,predecessor;</p><p>  }queue[512];</p><p>  int head=0,tail=0;</p><p>  void shoudong_maze(int m,int n){</p><p><b>  int i,j;</b></p>

46、;<p>  printf("\n\n");</p><p>  printf("請(qǐng)按行輸入迷宮,0表示通路,1表示障礙:\n\n");</p><p>  for(i=0;i<m;i++)</p><p>  for(j=0;j<n;j++)</p><p>  scanf(

47、"%d",&maze[i][j]);</p><p><b>  }</b></p><p>  void zidong_maze(int m,int n){</p><p><b>  int i,j;</b></p><p>  printf("\n迷宮生成

48、中……\n\n");</p><p>  system("pause");</p><p>  for(i=0;i<m;i++)</p><p>  for(j=0;j<n;j++)</p><p>  maze[i][j]=rand()%2;</p><p>  //由于ra

49、nd()產(chǎn)生的隨機(jī)數(shù)是從0到RAND_MAX(最大)</p><p>  //RAND_MAX是定義在stdlib.h中的,其值至少為32767)</p><p>  //要產(chǎn)生從X到Y(jié)的數(shù),只需要這樣寫:k=rand()%(Y-X+1)+X; </p><p><b>  }</b></p><p>  void pr

50、int_maze(int m,int n){</p><p><b>  int i,j;</b></p><p>  printf("\n迷宮生成結(jié)果如下:\n\n");</p><p>  printf("迷宮入口\n");</p><p>  printf("↓&q

51、uot;);</p><p>  for(i=0;i<m;i++){</p><p>  printf("\n");</p><p>  for(j=0;j<n;j++){ </p><p>  if(maze[i][j]==0) printf("□");</p><p&

52、gt;  if(maze[i][j]==1) printf("■");}</p><p><b>  }</b></p><p>  printf("→迷宮出口\n");</p><p><b>  }</b></p><p>  void result_ma

53、ze(int m,int n){</p><p><b>  int i,j;</b></p><p>  printf("迷宮通路(用☆表示)如下所示:\n\t");</p><p>  for(i=0;i<m;i++){</p><p>  printf("\n");&l

54、t;/p><p>  for(j=0;j<n;j++){</p><p>  if(maze[i][j]==0||maze[i][j]==2) printf("□");</p><p>  if(maze[i][j]==1) printf("■");</p><p>  if(maze[i][j]==

55、3) printf("☆");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void enqueue(struct point p){</p>&l

56、t;p>  queue[tail]=p;</p><p><b>  tail++;</b></p><p><b>  }</b></p><p>  struct point dequeue(){</p><p><b>  head++;</b></p>

57、<p>  return queue[head-1];</p><p><b>  }</b></p><p>  int is_empty(){</p><p>  return head==tail;</p><p><b>  }</b></p><p>

58、  void visit(int row,int col,int maze[41][41]){</p><p>  struct point visit_point={row,col,head-1};</p><p>  maze[row][col]=2;</p><p>  enqueue(visit_point);</p><p><

59、;b>  }</b></p><p>  int mgpath(int maze[41][41],int m,int n){</p><p><b>  X=1;</b></p><p>  struct point p={0,0,-1};</p><p>  if(maze[p.row][p.col]

60、==1){</p><p>  printf("\n===============================================\n");</p><p>  printf("此迷宮無(wú)解\n\n");X=0;return 0;}</p><p>  maze[p.row][p.col]=2;</p>

61、;<p>  enqueue(p);</p><p>  while(!is_empty()){</p><p>  p=dequeue();</p><p>  if((p.row==m-1)&&(p.col==n-1)) break;</p><p>  if((p.col+1<n)&&

62、(maze[p.row][p.col+1]==0)) visit(p.row,p.col+1,maze);</p><p>  if((p.row+1<m)&&(maze[p.row+1][p.col]==0)) visit(p.row+1,p.col,maze);</p><p>  if((p.col-1>=0)&&(maze[p.row][

63、p.col-1]==0)) visit(p.row,p.col-1,maze);</p><p>  if((p.row-1>=0)&&(maze[p.row-1][p.col]==0)) visit(p.row-1,p.col,maze);</p><p><b>  }</b></p><p>  if(p.row==

64、m-1&&p.col==n-1){</p><p>  printf("\n==================================================================\n");</p><p>  printf("迷宮路徑為:\n");</p><p>  printf

65、("(%d,%d)\n",p.row,p.col);</p><p>  maze[p.row][p.col]=3;</p><p>  while(p.predecessor!=-1)</p><p><b>  {</b></p><p>  p=queue[p.predecessor];<

66、/p><p>  printf("(%d,%d)\n",p.row,p.col);</p><p>  maze[p.row][p.col]=3;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>

67、;  else {</b></p><p>  printf("\n=============================================================\n");</p><p>  printf("此迷宮無(wú)解!\n\n");X=0;}</p><p><b>  r

68、eturn 0;</b></p><p><b>  }</b></p><p>  void main(void)</p><p><b>  {</b></p><p>  int i,m,n,cycle=0;</p><p>  while(cycle!=(

69、-1)){</p><p>  printf("********************************************************************************\n");</p><p>  printf(" 歡迎進(jìn)入迷宮求解系統(tǒng)\n");<

70、;/p><p>  printf(" 設(shè)計(jì)者:張?jiān)鰳s \n");</p><p>  printf("**********************************************************************

71、**********\n");</p><p>  printf(" →_→ 手動(dòng)生成迷宮 請(qǐng)按:1\n");</p><p>  printf(" →_→ 自動(dòng)生成迷宮 請(qǐng)按:2\n");</p><p> 

72、 printf(" →_→ 退出 請(qǐng)按:3\n\n");</p><p>  printf("********************************************************************************\n");</p><p>

73、  printf("\n");</p><p>  printf("請(qǐng)選擇你的操作:\n");</p><p>  scanf("%d",&i);</p><p>  switch(i){</p><p>  case 1:printf("\n請(qǐng)輸入行數(shù):"

74、;);</p><p>  scanf("%d",&m);</p><p>  printf("\n");</p><p>  printf("請(qǐng)輸入列數(shù):");scanf("%d",&n);</p><p>  while((m<=0||m

75、>39)||(n<=0||n>39)){</p><p>  printf("\n抱歉,你輸入的行列數(shù)超出預(yù)設(shè)范圍(0-39,0-39),請(qǐng)重新輸入:\n\n");</p><p>  printf("請(qǐng)輸入行數(shù):");scanf("%d",&m);</p><p>  print

76、f("\n");</p><p>  printf("請(qǐng)輸入列數(shù):");scanf("%d",&n);</p><p><b>  }</b></p><p>  shoudong_maze(m,n);</p><p>  print_maze(m,n)

77、;</p><p>  mgpath(maze,m,n);</p><p>  if(X!=0) result_maze(m,n);</p><p>  printf("\n\nPress Enter Contiue!\n");</p><p>  getchar();</p><p>  whil

78、e(getchar()!='\n');break;</p><p>  case 2:printf("\n請(qǐng)輸入行數(shù):");</p><p>  scanf("%d",&m);</p><p>  printf("\n");</p><p>  printf(

79、"請(qǐng)輸入列數(shù):");</p><p>  scanf("%d",&n);</p><p>  while((m<=0||m>39)||(n<=0||n>39)){</p><p>  printf("\n抱歉,你輸入的行列數(shù)超出預(yù)設(shè)范圍(0-39,0-39),請(qǐng)重新輸入:\n\n&qu

80、ot;);</p><p>  printf("請(qǐng)輸入行數(shù):");</p><p>  scanf("%d",&m);</p><p>  printf("\n");</p><p>  printf("請(qǐng)輸入列數(shù):");</p><p

81、>  scanf("%d",&n);}</p><p>  zidong_maze(m,n);</p><p>  print_maze(m,n);</p><p>  mgpath(maze,m,n);</p><p>  if(X!=0) result_maze(m,n);</p><

82、p>  printf("\n\nPress Enter Contiue!\n");</p><p>  getchar();</p><p>  while(getchar()!='\n');</p><p><b>  break;</b></p><p>  case 3:c

83、ycle=(-1);break;</p><p>  default:printf("\n");printf("你的輸入有誤!\n");</p><p>  printf("\nPress Enter Contiue!\n");</p><p>  getchar();</p><p&g

84、t;  while(getchar()!='\n');</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p&g

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論