

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告</p><p> 題目:___________迷宮求解_____________________________</p><p> 班級:__________ </p><p> 姓名:_____________</p><p><b> 同組人: </b></p
2、><p><b> 學(xué)號: </b></p><p> 完成日期:_____年 月 日—— 年 月 日 </p><p> 目 錄</p><p> 第一部分 引言……………………………………………………………………3</p><p> 第二部分 課程設(shè)
3、計報告…………………………………………………………3</p><p> 第一章 課程設(shè)計目的…………………………………………………3</p><p> 第二章 課程設(shè)計內(nèi)容和要求…………………………………………4</p><p> 2.1 問題描述………………………………………………4</p><p> 2.2 設(shè)計要求…………………
4、……………………………4</p><p> 第三章 課程設(shè)計總體方案及分析……………………………………4</p><p> 3.1 問題分析………………………………………………4</p><p> 3.2 概要設(shè)計………………………………………………7</p><p> 3.3 詳細(xì)設(shè)計………………………………………………7</
5、p><p> 3.4 調(diào)試分析………………………………………………10</p><p> 3.5 測試結(jié)果………………………………………………10</p><p> 3.6 參考文獻(xiàn)………………………………………………12</p><p> 第三部分 課程設(shè)計總結(jié)…………………………………………………………13</p>&l
6、t;p> 附錄(源代碼)……………………………………………………………………14</p><p><b> 第一部分 引言</b></p><p> 數(shù)據(jù)結(jié)構(gòu)是一門理論性強(qiáng)、思維抽象、難度較大的課程,是基礎(chǔ)課和專業(yè)課之間的橋梁。該課程的先行課程是計算機(jī)基礎(chǔ)、程序設(shè)計語言、離散數(shù)學(xué)等,后續(xù)課程有操作系統(tǒng)、編譯原理、數(shù)據(jù)庫原理、軟件工程等。 通過本門課程的
7、學(xué)習(xí),我們應(yīng)該能透徹地理解各種數(shù)據(jù)對象的特點,學(xué)會數(shù)據(jù)的組織方法和實現(xiàn)方法,并進(jìn)一步培養(yǎng)良好的程序設(shè)計能力和解決實際問題的能力,而且該課程的研究方法對我們學(xué)生在校和離校后的學(xué)習(xí)和工作,也有著重要的意義。</p><p> 數(shù)據(jù)結(jié)構(gòu)是電子信息科學(xué)與技術(shù)專業(yè)的一門核心專業(yè)基礎(chǔ)課程,在該專業(yè)的課程體系中起著承上啟下的作用,學(xué)好數(shù)據(jù)結(jié)構(gòu)對于提高理論認(rèn)知水平和實踐能力有著極為重要的作用。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的最終目的是為了獲得求
8、解問題的能力。對于現(xiàn)實世界中的問題,應(yīng)該能從中抽象出一個適當(dāng)?shù)臄?shù)學(xué)模型,該數(shù)學(xué)模型在計算機(jī)內(nèi)部用相應(yīng)的數(shù)據(jù)結(jié)構(gòu)來表示,然后設(shè)計一個解此數(shù)學(xué)模型的算法,再進(jìn)行編程調(diào)試,最后獲得問題的解答。</p><p> 基于此原因,暑期我們開設(shè)了數(shù)據(jù)結(jié)構(gòu)課程設(shè)計。針對數(shù)據(jù)結(jié)構(gòu)課程的特點,著眼于培養(yǎng)我們的實踐能力。實習(xí)課程是為了加強(qiáng)編程能力的培養(yǎng),鼓勵學(xué)生使用新興的編程語言。相信通過數(shù)據(jù)結(jié)構(gòu)課程實踐,無論是理論知識,還是實踐動
9、手能力,同學(xué)們都會有不同程度上的提高。</p><p> 第二部分 課程設(shè)計報告</p><p><b> 課程設(shè)計目的</b></p><p> 僅僅認(rèn)識到隊列是一種特殊的線性表是遠(yuǎn)遠(yuǎn)不夠的,本次實習(xí)的目的在于使學(xué)生深入了解隊列的特征,以便在實際問題背景下靈活運用它,同時還將鞏固這種數(shù)據(jù)結(jié)構(gòu)的構(gòu)造方法</p><
10、p> 第二章 課程設(shè)計內(nèi)容和要求 </p><p> 2.1問題描述: </p><p> 迷宮問題是取自心理學(xué)的一個古典實驗。在該實驗中,把一只老鼠從一個無頂大盒子的門放入,在盒子中設(shè)置了許多墻,對行進(jìn)方向形成了多處阻擋。盒子僅有一個出口,在出口處放置一塊奶酪,吸引老鼠在迷宮中尋找道路以到達(dá)出口。對同一只老鼠重復(fù)進(jìn)行上述實驗,一直到老鼠從入口走到出口,而不走
11、錯一步。老鼠經(jīng)過多次試驗最終學(xué)會走通迷宮的路線。設(shè)計一個計算機(jī)程序?qū)θ我庠O(shè)定的矩形迷宮如下圖A所示,求出一條從入口到出口的通路,或得出沒有通路的結(jié)論。 &
12、#160; 圖A</p><p><b>
13、 2.2設(shè)計要求:</b></p><p> 要求設(shè)計程序輸出如下:</p><p> (1) 建立一個大小為m×n的任意迷宮(迷宮數(shù)據(jù)可由用戶輸入或由程序自動生成),并在屏幕上顯示出來;</p><p> ?。?)找出一條通路的二元組(i,j)數(shù)據(jù)序列,(i,j)表示通路上某一點的坐標(biāo)。</p><p> ?。?
14、)用一種標(biāo)志(如數(shù)字8)在迷宮中標(biāo)出該條通路;</p><p> (4)在屏幕上輸出迷宮和通路;</p><p> ?。?)上述功能可用菜單選擇。</p><p> 第三章 課程設(shè)計總體方案及分析</p><p><b> 3.1 問題分析:</b><
15、;/p><p><b> 1.迷宮的建立:</b></p><p> 迷宮中存在通路和障礙,為了方便迷宮的創(chuàng)建,可用0表示通路,用1表示障礙,這樣迷宮就可以用0、1矩陣來描述,</p><p><b> 2.迷宮的存儲:</b></p><p> 迷宮是一個矩形區(qū)域,可以使用二維數(shù)組表示迷宮,這
16、樣迷宮的每一個位置都可以用其行列號來唯一指定,但是二維數(shù)組不能動態(tài)定義其大小,我們可以考慮先定義一個較大的二維數(shù)組maze[M+2][N+2],然后用它的前m行n列來存放元素,即可得到一個m×n的二維數(shù)組,這樣(0,0)表示迷宮入口位置,(m-1,n-1)表示迷宮出口位置。</p><p> 注:其中M,N分別表示迷宮最大行、列數(shù),本程序M、N的缺省值為39、39,當(dāng)然,用戶也可根據(jù)需要,調(diào)整其大小。
17、</p><p> 3.迷宮路徑的搜索:</p><p> 首先從迷宮的入口開始,如果該位置就是迷宮出口,則已經(jīng)找到了一條路徑,搜索工作結(jié)束。否則搜索其上、下、左、右位置是否是障礙,若不是障礙,就移動到該位置,然后再從該位置開始搜索通往出口的路徑;若是障礙就選擇另一個相鄰的位置,并從它開始搜索路徑。為防止搜索重復(fù)出現(xiàn),則將已搜索過的位置標(biāo)記為2,同時保留搜索痕跡,在考慮進(jìn)入下一個位置搜
18、索之前,將當(dāng)前位置保存在一個隊列中,如果所有相鄰的非障礙位置均被搜索過,且未找到通往出口的路徑,則表明不存在從入口到出口的路徑。這實現(xiàn)的是廣度優(yōu)先遍歷的算法,如果找到路徑,則為最短路徑。</p><p> 以矩陣 0 0 1 0 1 為例,來示范一下</p><p><b> 1 0 0 1 0</b></p><p><b>
19、 1 0 0 0 1</b></p><p><b> 0 0 1 0 0</b></p><p> 首先,將位置(0,0)(序號0)放入隊列中,其前節(jié)點為空,從它開始搜索,其標(biāo)記變?yōu)?,由于其只有一個非障礙位置,所以接下來移動到(0,1)(序號1),其前節(jié)點序號為0,標(biāo)記變?yōu)?,然后從(0,1)移動到(1,1)(序號2),放入隊列中,其前節(jié)點序號為
20、1,(1,1)存在(1,2)(序號3)、(2,1)(序號4)兩個可移動位置,其前節(jié)點序號均為2.對于每一個非障礙位置,它的相鄰非障礙節(jié)點均入隊列,且它們的前節(jié)點序號均為該位置的序號,所以如果存在路徑,則從出口處節(jié)點的位置,逆序就可以找到其從出口到入口的通路。</p><p><b> 如下表所示:</b></p><p> 0 1 2
21、 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> 搜索算法流程圖如下所示:</p><p><b> 3.2 概要設(shè)計</b></p
22、><p> 1.①構(gòu)建一個二維數(shù)組maze[M+2][N+2]用于存儲迷宮矩陣</p><p> ?、谧詣踊蚴謩由擅詫m,即為二維數(shù)組maze[M+2][N+2]賦值</p><p> ?、蹣?gòu)建一個隊列用于存儲迷宮路徑</p><p> ?、芙⒚詫m節(jié)點struct point,用于存儲迷宮中每個節(jié)點的訪問情況</p><p
23、><b> ?、輰崿F(xiàn)搜索算法</b></p><p> ?、奁聊簧巷@示操作菜單</p><p> 2.本程序包含10個函數(shù):</p><p> (1)主函數(shù) main()</p><p> (2)手動生成迷宮函數(shù) shoudong_maze()</p><p> (3)自動生成迷宮函
24、數(shù) zidong_maze()</p><p> (4)將迷宮打印成圖形 print_maze()</p><p> (5)打印迷宮路徑 (若存在路徑) result_maze()</p><p> (6)入隊 enqueue()</p><p> (7)出隊 dequeue()</p><p> (8)判斷
25、隊列是否為空 is_empty()</p><p> (9)訪問節(jié)點 visit()</p><p> (10)搜索迷宮路徑 mgpath()</p><p><b> 3.3 詳細(xì)設(shè)計</b></p><p> 實現(xiàn)概要設(shè)計中定義的所有數(shù)據(jù)類型及操作的偽代碼算法</p><p><
26、b> 節(jié)點類型和指針類型</b></p><p> 迷宮矩陣類型:int maze[M+2][N+2];為方便操作使其為全局變量</p><p> 迷宮中節(jié)點類型及隊列類型:struct point{int row,col,predecessor} que[512]</p><p><b> 迷宮的操作</b><
27、/p><p><b> (1)手動生成迷宮</b></p><p> void shoudong_maze(int m,int n)</p><p> {定義i,j為循環(huán)變量</p><p><b> for(i<=m)</b></p><p><b>
28、 for(j<=n)</b></p><p> 輸入maze[i][j]的值</p><p><b> }</b></p><p><b> (2)自動生成迷宮</b></p><p> void zidong_maze(int m,int n)</p>&l
29、t;p> {定義i,j為循環(huán)變量</p><p><b> for(i<=m)</b></p><p><b> for(j<=n)</b></p><p> maze[i][j]=rand()%2 //由于rand()產(chǎn)生的隨機(jī)數(shù)是從0到RAND_MAX,RAND_MAX是定義在stdlib
30、.h中的,其值至少為32767),要產(chǎn)生從X到Y(jié)的數(shù),只需要這樣寫:k=rand()%(Y-X+1)+X;</p><p><b> }</b></p><p><b> (3)打印迷宮圖形</b></p><p> void print_maze(int m,int n)</p><p>
31、 {用i,j循環(huán)變量,將maze[i][j]輸出 □、■}</p><p><b> (4)打印迷宮路徑</b></p><p> void result_maze(int m,int n)</p><p> {用i,j循環(huán)變量,將maze[i][j]輸出 □、■、☆}</p><p><b> (5)
32、搜索迷宮路徑</b></p><p> ?、倜詫m中隊列入隊操作</p><p> void enqueue(struct point p)</p><p> {將p放入隊尾,tail++}</p><p> ?、诿詫m中隊列出隊操作</p><p> struct point dequeue(struc
33、t point p)</p><p> {head++,返回que[head-1]}</p><p><b> ?、叟袛嚓犃惺欠駷榭?lt;/b></p><p> int is_empty()</p><p> {返回head==tail的值,當(dāng)隊列為空時,返回0}</p><p> ?、茉L問迷
34、宮矩陣中節(jié)點</p><p> void visit(int row,int col,int maze[41][41])</p><p> {建立新的隊列節(jié)點visit_point,將其值分別賦為row,col,head-1,maze[row][col]=2,表示該節(jié)點以被訪問過;調(diào)用enqueue(visit_point),將該節(jié)點入隊}</p><p>&l
35、t;b> ?、萋窂角蠼?lt;/b></p><p> void mgpath(int maze[41][41],int m,int n)</p><p> {先定義入口節(jié)點為struct point p={0,0,-1},從maze[0][0]開始訪問。如果入口處即為障礙,則此迷宮無解,返回0 ,程序結(jié)束。否則訪問入口節(jié)點,將入口節(jié)點標(biāo)記為訪問過maze[p.row][p
36、.col]=2,調(diào)用函數(shù)enqueue(p)將該節(jié)點入隊。</p><p> 判斷隊列是否為空,當(dāng)隊列不為空時,則運行以下操作:</p><p> { 調(diào)用dequeue()函數(shù),將隊頭元素返回給p,</p><p> 如果p.row==m-1且p.col==n-1,即到達(dá)出口節(jié)點,即找到了路徑,結(jié)束</p><p> 如果p.col
37、+1<n且maze[p.row][p.col+1]==0,說明未到迷宮右邊界,且其右方有通路,則visit(p.row,p.col+1,maze),將右邊節(jié)點入隊標(biāo)記已訪問</p><p> 如果p.row+1<m且maze[p.row+1][p.col]==0,說明未到迷宮下邊界,且其下方有通路,則visit(p.row+1,p.col,maze),將下方節(jié)點入隊標(biāo)記已訪問</p>
38、<p> 如果p.col-1>0且maze[p.row][p.col-1]==0,說明未到迷宮左邊界,且其左方有通路,則visit(p.row,p.col-1,maze),將左方節(jié)點入隊標(biāo)記已訪問</p><p> 如果p.row-1>0且maze[p.row-1][p.col]==0,說明未到迷宮上邊界,且其上方有通路,則visit(p.row,p.col+1,maze),將上方節(jié)點入
39、隊標(biāo)記已訪問</p><p><b> }</b></p><p> 訪問到出口(找到路徑)即p.row==m-1且p.col==n-1,則逆序?qū)⒙窂綐?biāo)記為3即maze[p.row][p.col]==3;</p><p> while(p.predecessor!=-1)</p><p> {p=queue[p.
40、predecessor]; maze[p.row][p.col]==3;}</p><p> 最后將路徑圖形打印出來。</p><p><b> 3.菜單選擇</b></p><p> while(cycle!=(-1))</p><p> ☆ 手動生成迷宮 請按:1</p><p>
41、 ☆ 自動生成迷宮 請按:2</p><p> ☆ 退出 請按:3</p><p> scanf("%d",&i);</p><p><b> switch(i)</b></p><p> { case 1:請輸入行列數(shù)(如果超出預(yù)設(shè)范圍則提示重新輸入) &l
42、t;/p><p> shoudong_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><p> case 2 :請輸入行列數(shù)(如果超出預(yù)設(shè)范圍則提示重新輸
43、入)</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><p> case 3:cycle=(-1); break;&l
44、t;/p><p><b> }</b></p><p> 注:具體源代碼見附錄</p><p><b> 3.4 調(diào)試分析</b></p><p> 在調(diào)試過程中,首先使用的是棧進(jìn)行存儲,但是產(chǎn)生的路徑是多條或不是最短路徑,所以通過算法比較,改用此算法</p><p>&
45、lt;b> 3.5 測試結(jié)果</b></p><p> 1.手動輸入迷宮 </p><p><b> 2.自動生成迷宮</b></p><p><b> 3.6 參考文獻(xiàn)</b></p><p> 【1】 嚴(yán)蔚敏 吳偉民 《數(shù)據(jù)結(jié)構(gòu)(C語言版)》 清華大學(xué)
46、出版社, 2009年9月</p><p> 【2】 譚浩強(qiáng) 《C程序設(shè)計(第三版)》 清華大學(xué)出版社 2009年1月</p><p> 第三部分 課程設(shè)計總結(jié)</p><p> 通過這段時間的課程設(shè)計,本人對計算機(jī)的應(yīng)用,數(shù)據(jù)結(jié)構(gòu)的作用以及C語言的使用都有了更深的了解。尤其是C語言的進(jìn)步讓我深刻的感受到任何所學(xué)的知識都需要實踐,沒有實踐就無法真正理
47、解這些知識以及掌握它們,使其成為自己的財富。在理論學(xué)習(xí)和上機(jī)實踐的各個環(huán)節(jié)中,通過自主學(xué)習(xí)和請教老師,我收獲了不少。當(dāng)然也遇到不少的問題,也正是因為這些問題引發(fā)的思考給我?guī)Я耸斋@。從當(dāng)初不喜歡上機(jī)寫程序到現(xiàn)在能主動寫程序,從當(dāng)初拿著程序不只如何下手到現(xiàn)在知道如何分析問題,如何用專業(yè)知識解決實際問題的轉(zhuǎn)變,我發(fā)現(xiàn)無論是專業(yè)知識還是動手能力,自己都有很大程度的提高。在這段時間里,我對for、while等的循環(huán)函數(shù)用法更加熟悉,逐漸形成了較好
48、的編程習(xí)慣。在老師的指導(dǎo)幫助下,同學(xué)們課余時間的討論中,這些問題都一一得到了解決。在程序的調(diào)試能力上,無形中得到了許多的提高。例如:頭文件的使用,變量和數(shù)組的范圍問題,定義變量時出現(xiàn)的問題等等。</p><p> 在實際的上機(jī)操作過程中,不僅是讓我們了解數(shù)據(jù)結(jié)構(gòu)的理論知識,更重要的是培養(yǎng)解決實際問題的能力,所以相信通過此次實習(xí)可以提高我們分析設(shè)計能力和編程能力,為后續(xù)課程的學(xué)習(xí)及實踐打下良好的基礎(chǔ)。</p
49、><p> 在這次短短的課程實踐里,我們得到了xx老師的關(guān)心和幫助。她給了我們很多的信息,與我們一起探討問題,詢問我們遇到了哪些問題并耐心給予指導(dǎo)。當(dāng)我們遇到技術(shù)上難以解決的問題時,她就會指導(dǎo)我們解決問題,她把自己多年來積累的經(jīng)驗教授給我們,使我們順利地完成了課程實踐任務(wù)。時間過得真快,大學(xué)生活不知不覺就走過了一年,一年的大學(xué)學(xué)習(xí)和課程實踐階段的提高,使我們本身知識得到提高的同時,也增強(qiáng)了我們對未來工作的信心,我們
50、相信自己未來三年的學(xué)習(xí)更使我們有能力勝任將來的工作。</p><p><b> 附錄:</b></p><p> #include"stdlib.h"</p><p> #include"stdio.h"</p><p> #define N 39</p>&
51、lt;p> #define M 39</p><p><b> int X;</b></p><p> int maze[N+2][M+2];</p><p> struct point{</p><p> int row,col,predecessor;</p><p> }q
52、ueue[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><p> printf("\n\n");</p><
53、p> printf("請按行輸入迷宮,0表示通路,1表示障礙:\n\n");</p><p> for(i=0;i<m;i++)</p><p> for(j=0;j<n;j++)</p><p> scanf("%d",&maze[i][j]);</p><p>&l
54、t;b> }</b></p><p> void zidong_maze(int m,int n){</p><p><b> int i,j;</b></p><p> printf("\n迷宮生成中……\n\n");</p><p> system("paus
55、e");</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> //由于rand()產(chǎn)生的隨機(jī)數(shù)是從0到RAND_MAX</p><p> //RAND_MAX
56、是定義在stdlib.h中的,其值至少為32767)</p><p> //要產(chǎn)生從X到Y(jié)的數(shù),只需要這樣寫:k=rand()%(Y-X+1)+X; </p><p><b> }</b></p><p> void print_maze(int m,int n){</p><p><b> int i
57、,j;</b></p><p> printf("\n迷宮生成結(jié)果如下:\n\n");</p><p> printf("迷宮入口\n");</p><p> printf("↓");</p><p> for(i=0;i<m;i++)</p>
58、<p> {printf("\n");</p><p> for(j=0;j<n;j++) </p><p> {if(maze[i][j]==0) printf("□");</p><p> if(maze[i][j]==1) printf("■");}</p>&
59、lt;p><b> }</b></p><p> printf("→迷宮出口\n");</p><p><b> }</b></p><p> void result_maze(int m,int n){</p><p><b> int i,j;<
60、;/b></p><p> printf("迷宮通路(用☆表示)如下所示:\n\t");</p><p> for(i=0;i<m;i++)</p><p> {printf("\n");</p><p> for(j=0;j<n;j++)</p><p&g
61、t; {if(maze[i][j]==0||maze[i][j]==2) printf("□");</p><p> if(maze[i][j]==1) printf("■");</p><p> if(maze[i][j]==3) printf("☆");</p><p><b> }&
62、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p> void enqueue(struct point p){</p><p> queue[tail]=p;</p><p><b> tail
63、++;</b></p><p><b> }</b></p><p> struct point dequeue(){</p><p><b> head++;</b></p><p> return queue[head-1];</p><p><
64、b> }</b></p><p> int is_empty(){</p><p> return head==tail;</p><p><b> }</b></p><p> void visit(int row,int col,int maze[41][41]){</p>
65、<p> struct point visit_point={row,col,head-1};</p><p> maze[row][col]=2;</p><p> enqueue(visit_point);</p><p><b> }</b></p><p> int mgpath(int ma
66、ze[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]==1)</p><p> {printf("\n================
67、===============================\n");</p><p> printf("此迷宮無解\n\n");X=0;return 0;}</p><p> maze[p.row][p.col]=2;</p><p> enqueue(p);</p><p> while(!is_e
68、mpty())</p><p> {p=dequeue();</p><p> if((p.row==m-1)&&(p.col==n-1)) break;</p><p> if((p.col+1<n)&&(maze[p.row][p.col+1]==0)) visit(p.row,p.col+1,maze);</p
69、><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][p.col-1]==0)) visit(p.row,p.col-1,maze);</p><p&g
70、t; 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==m-1&&p.col==n-1)</p><p> {printf(&quo
71、t;\n==================================================================\n");</p><p> printf("迷宮路徑為:\n");</p><p> printf("(%d,%d)\n",p.row,p.col);</p><p>
72、maze[p.row][p.col]=3;</p><p> while(p.predecessor!=-1)</p><p> {p=queue[p.predecessor];</p><p> printf("(%d,%d)\n",p.row,p.col);</p><p> maze[p.row][p.col
73、]=3;</p><p><b> }</b></p><p><b> }</b></p><p> else {printf("\n=============================================================\n");</p><
74、;p> printf("此迷宮無解!\n\n");X=0;}</p><p><b> return 0;</b></p><p><b> }</b></p><p> void main()</p><p> {int i,m,n,cycle=0;</p
75、><p> while(cycle!=(-1))</p><p><b> {</b></p><p> printf("********************************************************************************\n");</p><
76、p> printf(" 歡迎進(jìn)入迷宮求解系統(tǒng)\n");</p><p> printf(" 設(shè)計者:賴海濤(信科091)\n");</p><p> printf("**
77、******************************************************************************\n");</p><p> printf(" ☆ 手動生成迷宮 請按:1\n");</p><p> printf("
78、 ☆ 自動生成迷宮 請按:2\n");</p><p> printf(" ☆ 退出 請按:3\n\n");</p><p> printf("**********************************************
79、**********************************\n");</p><p> printf("\n");</p><p> printf("請選擇你的操作:\n");</p><p> scanf("%d",&i);</p><p><
80、;b> switch(i)</b></p><p> {case 1:printf("\n請輸入行數(shù):");scanf("%d",&m);</p><p> printf("\n");</p><p> printf("請輸入列數(shù):");scanf(&q
81、uot;%d",&n);</p><p> while((m<=0||m>39)||(n<=0||n>39))</p><p> {printf("\n抱歉,你輸入的行列數(shù)超出預(yù)設(shè)范圍(0-39,0-39),請重新輸入:\n\n");</p><p> printf("請輸入行數(shù):&quo
82、t;);scanf("%d",&m);</p><p> printf("\n");</p><p> printf("請輸入列數(shù):");scanf("%d",&n);</p><p><b> }</b></p><p&g
83、t; shoudong_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><p> printf("\n\nPress Enter Contiue!\n")
84、;getchar();while(getchar()!='\n');break;</p><p> case 2:printf("\n請輸入行數(shù):");scanf("%d",&m);</p><p> printf("\n");</p><p> printf("請輸
85、入列數(shù):");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),請重新輸入:\n\n");</p><p> pri
86、ntf("請輸入行數(shù):");scanf("%d",&m);</p><p> printf("\n");</p><p> printf("請輸入列數(shù):");scanf("%d",&n);</p><p><b> }</b>
87、;</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><p> printf("\n\nPress Enter
88、 Contiue!\n");getchar();while(getchar()!='\n');break;</p><p> case 3:cycle=(-1);break;</p><p> default:printf("\n");printf("你的輸入有誤!\n");</p><p>
89、printf("\nPress Enter Contiue!\n");getchar();while(getchar()!='\n');break;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 迷宮求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告
- 迷宮求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 迷宮求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 迷宮問題的求解數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告---迷宮求解
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計報告迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)迷宮求解課程設(shè)計報告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-迷宮求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---迷宮問題求解
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--求解迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)迷宮求解(代碼參數(shù))課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)與算法----迷宮求解課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告--迷宮
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告-迷宮求解(遞歸與非遞歸)
- 數(shù)據(jù)結(jié)構(gòu)迷宮課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)迷宮課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---迷宮
評論
0/150
提交評論