版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計</b></p><p><b> 目 錄</b></p><p><b> 摘 要3</b></p><p> Abstract3</p><p><b> 一、引 言1</b><
2、;/p><p> 二、設(shè)計目的與任務(wù)1</p><p><b> 1、設(shè)計目的是1</b></p><p><b> 2、設(shè)計任務(wù)是2</b></p><p> 三、設(shè)計方案與實施2</p><p> 1、總體設(shè)計思想2</p><p>
3、;<b> 2、設(shè)計流程圖3</b></p><p><b> 3、詳細設(shè)計4</b></p><p><b> 4、程序清單4</b></p><p> 5、程序調(diào)試與體會4</p><p> 6、運行結(jié)果(截圖)5</p><p>
4、;<b> 五、致 謝13</b></p><p><b> 參考文獻14</b></p><p><b> 附件14</b></p><p><b> 摘 要</b></p><p> 隨著計算機的高速發(fā)展,計算機能很簡便地解決很多
5、問題。C語言編程也是解決問題的一種語言。而此我們的數(shù)據(jù)結(jié)構(gòu)程序設(shè)計是解決迷宮問題。求迷宮(老鼠吃奶酪)中從入口到出口的路徑是一個經(jīng)典的程序設(shè)計問題。“數(shù)據(jù)結(jié)構(gòu)”成為計算機程序設(shè)計的重要理論技術(shù)基礎(chǔ),它不僅是計算機學科的核心課程,而且已成為其它理工專業(yè)的熱門選修課。主要包括線性表、樹和二叉樹以及圖等基本類型的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設(shè)計問題中計算機的操作對象以及它們之間的關(guān)系和運算等的學科,包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存
6、儲結(jié)構(gòu)和數(shù)據(jù)的運算這三個方面的內(nèi)容,其中邏輯結(jié)構(gòu)可分為線性結(jié)構(gòu)和非線性結(jié)構(gòu);存儲結(jié)構(gòu)可分為順序存儲和鏈式存儲兩類,圖則屬于邏輯結(jié)構(gòu)中的非線性結(jié)構(gòu)。廣度優(yōu)先搜索(BFS)用的隊列一步一步完成的,從而找到的是最短路徑。</p><p> 關(guān)鍵詞:隊列,廣度優(yōu)先,搜索,最短路徑,遍歷</p><p><b> Abstract</b></p><p&
7、gt; With the rapid development of the computer,the computer can very easily solve many problems. C programming language is a language problem. Our data structure and this program is designed to solve maze problems.Find
8、the maze(Mouse eat cheese) to the exit path from the entrance is a classic programming problem."data structure" has become the important theory and the foundation of computer programming.It is not only the core
9、 curriculum of computer science,but also has became the hottest elective co</p><p> Key words: Queue,Breadth-first ,search,Shortest path,Traversal</p><p> 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計</p><p> ----
10、迷宮求解設(shè)計</p><p><b> 一、引 言</b></p><p> 《數(shù)據(jù)結(jié)構(gòu)》是計算機科學與技術(shù)專業(yè)和信息管理與信息系統(tǒng)專業(yè)的必修課之一,是一門綜合性的專業(yè)基礎(chǔ)課。本課程較系統(tǒng)地介紹了軟件設(shè)計中常用的數(shù)據(jù)結(jié)構(gòu)以及相應的實現(xiàn)算法,如線性表、棧、隊列、樹和二叉樹,圖、檢索和排序等,并對性能進行分析和比較,內(nèi)容非常豐富。</p><p&
11、gt; 本課程設(shè)計我們要解決的問題是圖迷宮求解問題。本需要用到棧的相關(guān)數(shù)據(jù)結(jié)構(gòu)。但我們這個程序沒有用棧,而是用隊列替代棧的功能,使程序運行效率更加高。還用到求迷宮問題最平常的數(shù)據(jù)結(jié)構(gòu)算法,即廣度優(yōu)先搜索算法(BFS),還保持了它的路徑,再從串中輸出圖。</p><p> 本課程設(shè)計總的思路要解決的問題是構(gòu)造迷宮,尋找路線,打印路徑。我們首先要做的是創(chuàng)建一個二維數(shù)組,用以來存儲圖,然后我們要想好怎樣利用BFS算
12、法來尋找路線。把這個算法以及其他過程寫成調(diào)用函數(shù),各自調(diào)用后調(diào)試程序。達到滿意結(jié)果后寫報告。</p><p><b> 二、設(shè)計目的與任務(wù)</b></p><p><b> 1、設(shè)計目的是</b></p><p> 根據(jù)課堂講授內(nèi)容,學生做相應的自主練習,消化數(shù)據(jù)結(jié)構(gòu)課堂所講解的內(nèi)容;通過調(diào)試典型例題或習題積累調(diào)試C
13、程序的經(jīng)驗;通過完成輔導教材中的編程題,逐漸培養(yǎng)學生的編程能力、用計算機解決實際問題的能力、團體合作能力。</p><p><b> 2、設(shè)計任務(wù)是</b></p><p> 它的任務(wù)就是訓練學生對計算機數(shù)據(jù)對象進行分析的能力,選擇適當?shù)臄?shù)據(jù)結(jié)構(gòu)及相關(guān)算法的能力。 此程序的任務(wù)是實現(xiàn)把能走的最短路找到,并很直觀的顯示在屏幕上的功能。</p><
14、p><b> 三、設(shè)計方案與實施</b></p><p><b> 1、總體設(shè)計思想</b></p><p> (1) 迷宮形狀由0表示可通過,用1表示是障礙。為方便用0,1輸入。并把迷宮圖形保存在二維數(shù)組Map中。而打印出的圖形中 ‘●’表示能過‘□’表示障礙.</p><p> (2) 對探索過的位置加以
15、標記Used[][],輸入起點終點后可由BFS()來完成搜索。到目的點就可退出該調(diào)用程序。把每步路徑保存到Mark[][]內(nèi),通過反向進行退步可把完整的路徑保存在結(jié)構(gòu)體result數(shù)組re[][]內(nèi),通過標記的路徑可將串str作相應的改變就能輸出的帶路徑的圖。</p><p> (3) 根據(jù)二維字符數(shù)組和加標記的位置坐標,輸出迷宮的圖形。</p><p> (4) 該程序在獲取迷宮圖結(jié)
16、構(gòu)后,可對迷宮任意入口到出口的路線進行搜索,主要由廣度優(yōu)先搜索完成該操作。它可以是100以內(nèi)大小的迷宮,有自行提供的迷宮圖,本課程設(shè)計是以二維數(shù)組作為迷宮的存儲結(jié)構(gòu)。而廣度優(yōu)先搜索(BFS)用的隊列一步一步完成的,從而找到的是最短路徑;該程序還能選擇是4方向還是8方向的迷宮走法。并能輸出打印</p><p><b> 2、設(shè)計流程圖</b></p><p><
17、b> 3、詳細設(shè)計</b></p><p> struct Point</p><p> {int x,y,s;}</p><p> 這個結(jié)構(gòu)體是用來做廣度搜索的對每個迷宮節(jié)點有相應的s(最短的步數(shù),當然有些是不可達的)</p><p> int move[8][2] = {{1,0},{0,1},{-1,0},{
18、0,-1},{1,1},{-1,-1},{1,-1},{-1,1}} ;//</p><p> int BFS(int step)// 廣度搜索用來算出最短路徑的走法 并將走法保存在re數(shù)組結(jié)構(gòu)體中</p><p> int Initialization()// 將str[][]圖形初始化</p><p> int Format_Limit()//圖形打印格
19、式限制</p><p> int Print_Maze_Figure()//打印出圖形</p><p> int PPMF()// 打印出迷宮圖形</p><p> int Save_Path()// 將路徑保存在str[][]中并打印出路徑迷宮圖形</p><p> int Init()// 從文件中植入數(shù)據(jù) 完成對Map迷宮圖的結(jié)
20、構(gòu)</p><p> int Judge()//判斷輸入的起點終點是否符合實際</p><p> int main()//對上面函數(shù)的結(jié)合應用</p><p><b> 4、程序清單</b></p><p><b> 見附件</b></p><p><b>
21、 5、程序調(diào)試與體會</b></p><p> 調(diào)試:在我組的集體努力下,課程設(shè)計終于完成,由于我們對數(shù)據(jù)結(jié)構(gòu)和c語言不是很了解,有時忽略了一些關(guān)鍵的細節(jié),使得在編寫程序的過程中出現(xiàn)了一些問題。對于打字有時粗心導致出現(xiàn)一些難以發(fā)現(xiàn)的小錯誤,在我們的耐心,細致的調(diào)試下最終使得程序能夠運行,課程設(shè)計完滿完工。</p><p> 1、問題一:求出起點到終點的路徑 </p&
22、gt;<p> 現(xiàn)象:求出的結(jié)果總是無任何現(xiàn)象</p><p> 原因:把相關(guān)重要的變量重復定義以至賦過的值被覆蓋</p><p> 問題二:常量轉(zhuǎn)義字符</p><p> 現(xiàn)象:出現(xiàn)不正常字符常量</p><p> 原因:'\'字符常量形式弄錯</p><p> 3、問題三:
23、輸入起點終點時,未判斷下標越界就使用數(shù)據(jù)</p><p><b> 現(xiàn)象:</b></p><p> 原因:未判斷下標越界就使用數(shù)據(jù)</p><p> 體會:在復雜的程序,都可以拆成一個個簡單的小部分,逐個擊破,再拼湊起來,在復雜的事也變的簡單了。由于本程序較大,調(diào)試時多人協(xié)作能更容易找出程序的錯誤并修改。</p><
24、p> 6、運行結(jié)果(截圖)</p><p> 將程序員錄入后,讓其運行。將會出現(xiàn)一個菜單的界面,執(zhí)行各種操作均有其對應的代碼。要執(zhí)行何種操作只需輸入對應的指令即可進行,在每步操作后均會有相應的提示。操作簡單方便實用,下面即為一些操作的示意圖。</p><p> 運行程序后出界面,運行結(jié)果如圖所示。</p><p><b> 四、結(jié) 論<
25、;/b></p><p> 經(jīng)過我們不懈的努力我們終于完成了本次課程設(shè)計,通過這次課程設(shè)計,我感覺到要真正做出一個程序并不很容易,但只要用心去做,總會有收獲,特別是當我遇到 一個問題,想辦法去解決,最后終于找到方法時,心里的那份喜悅之情真是難以形容。編寫程序中遇到問題再所難免,應耐心探究其中的原因,從出現(xiàn)問題的地方起,并聯(lián)系前后程序,仔細推敲,逐個排查。直到最終搞清為止。我們本次做的是迷宮求解問題,深刻的
26、體會到它的游戲可玩性。通過本次課程設(shè)計我們發(fā)現(xiàn)我們對于C語言和數(shù)據(jù)結(jié)構(gòu)還有很多地方不了解,今后繼續(xù)努力學習。</p><p><b> 五、致 謝</b></p><p> 在這里我真心的感謝xx老師對我們精心的指導和不倦的教育,她在我們的課程設(shè)計過程中提出了指導性的方案和架構(gòu),時事關(guān)注我們設(shè)計的進程,并指引我們閱讀相關(guān)的資料和書籍,使我們的課設(shè)能夠按時順利的完
27、成。還有周國柱同學全面承擔本次課程設(shè)計的程序編寫工作,并為此付出大量的時間和精力。在這里我代表我們組全體同學對他表示感謝,同時也有組員的積極配合與協(xié)作。</p><p> 同時也感謝學校給我們這次機會,訓練我們靈活應用所學數(shù)據(jù)結(jié)構(gòu)知識,獨立完成問題分析的能力,讓我們學會怎樣結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識去解決實際問題。</p><p><b> 參考文獻</b></p
28、><p> [1]數(shù)據(jù)結(jié)構(gòu)(C語言版)[M],嚴蔚敏等編著.清華大學出版社,2004,</p><p> [2]數(shù)據(jù)結(jié)構(gòu)-用面向?qū)ο蠓椒ㄅcC++描述,殷人昆,陶水雷,謝若陽,盛絢華,清華大學出版社</p><p> [3]任意N重循環(huán)的設(shè)計方法與應用[J]--《計算機工程》,肖建華,歐陽浩,何宏,2004年22期 </p><p> [4
29、]用人工智能中的搜索原理解決迷宮問題--《微計算機信息》,陳春梅,楊世恩,2006年11期</p><p><b> 附件</b></p><p> #include <stdlib.h></p><p> #include <iostream></p><p> #include <
30、;string></p><p> #include <queue>// 這個是stl 它是一個方便的東西 </p><p> #include <fstream></p><p> #include <conio.h></p><p> using namespace std;</p&
31、gt;<p> struct result</p><p><b> {</b></p><p> int rx,ry;</p><p> }re[100*100];</p><p> int ri=-1;</p><p> struct Point</p>
32、<p><b> {</b></p><p> int x,y,s;</p><p> }s,t;//s代表起點 t代表終點</p><p> int mark[100][100]; //用來標記怎么走到這個地方的 (保存的是方向的序號):0,1,2,3,4,5,6,7</p><p> bool
33、Used[100][100];//標記已經(jīng)走過的地方</p><p> bool Map[100][100];//輸入0,1表示迷宮</p><p> int move[8][2] = {{1,0},{0,1},{-1,0},{0,-1},{1,1},{-1,-1},{1,-1},{-1,1}} ;//</p><p><b> int n,m;&l
34、t;/b></p><p> int BFS(int step) // 廣度搜索用來算出最短路徑的走法 并將走法保存在re結(jié)構(gòu)體中</p><p><b> {</b></p><p> queue<Point> My;</p><p><b> s.s =0;</b>&
35、lt;/p><p> while(!My.empty())My.pop();</p><p> My.push(s);</p><p> Point temp,s1;</p><p> while(!My.empty())</p><p><b> {</b></p><
36、p> s1 = My.front();</p><p><b> My.pop();</b></p><p> if(s1.x == t.x&&s1.y==t.y)</p><p><b> {</b></p><p><b> int u;</b&g
37、t;</p><p> re[++ri].rx=s1.x;</p><p> re[ri].ry=s1.y;</p><p> printf("到目的地了\n步數(shù):%d\n(%2d,%2d) <- ",s1.s,s1.x,s1.y);</p><p> for(int j = 1 ;j <= s1.s
38、;j++)</p><p><b> {</b></p><p><b> u = s1.x;</b></p><p> s1.x = s1.x - move[ mark[s1.x][s1.y]][0];</p><p> s1.y = s1.y - move[ mark[u][s1.y]
39、 ][1];</p><p> re[++ri].rx=s1.x;</p><p> re[ri].ry=s1.y;</p><p> printf("(%2d,%2d) <- ",s1.x,s1.y);</p><p> if((j+1)%5==0)printf("\n");<
40、/p><p><b> }</b></p><p> printf("\n");</p><p> system("pause");</p><p> system("cls");</p><p><b> return
41、1;</b></p><p><b> }</b></p><p> for(int i =0 ;i < step ; i++)</p><p><b> {</b></p><p> temp.x = s1.x + move[i][0];</p><p
42、> temp.y = s1.y + move[i][1];</p><p> temp.s = s1.s;</p><p> if(temp.x<0||temp.x>=n||temp.y<0||temp.y>=n||Used[temp.x][temp.y]||Map[temp.x][temp.y])</p><p><b&g
43、t; continue;</b></p><p><b> else</b></p><p><b> {</b></p><p> mark[temp.x][temp.y] = i;</p><p> temp.s += 1 ;</p><p> M
44、y.push(temp);</p><p> Used[temp.x][temp.y] = true;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> prin
45、tf("不好意思,起點至終點無路徑不可達!!!!\n");</p><p><b> return 0;</b></p><p><b> }</b></p><p> char str[256*256][3]; //串保存圖</p><p> int Initiali
46、zation()// 將str[][]圖形初始化</p><p><b> {</b></p><p> int i1,j1,xj;</p><p> for(i1=0;i1<256*256;i1++)</p><p> strcpy(str[i1]," ");</p>
47、<p> for(i1=0;i1<n;i1++)</p><p><b> {</b></p><p> for(j1=0,xj=0;xj<n;j1=j1+2,xj++)</p><p><b> {</b></p><p> if(Map[i1][xj] == 0)
48、</p><p> strcpy(str[2*i1*(2*n-1)+j1],"●");</p><p><b> else</b></p><p> strcpy(str[2*i1*(2*n-1)+j1],"□");</p><p><b> }</b>
49、;</p><p><b> }</b></p><p><b> return 1;</b></p><p><b> }</b></p><p> int Format_Limit()//圖形打印格式限制</p><p><b>
50、 {</b></p><p> for(int i =0; i <35-2*n&&(35-2*n)>0;i++)</p><p> printf(" ");</p><p><b> return 1;</b></p><p><b> }&l
51、t;/b></p><p> int Print_Maze_Figure()//打印出圖形</p><p><b> {</b></p><p> int i,xi,xj;</p><p> Format_Limit();</p><p> for(i =0 ;i <= n*
52、2;i++)</p><p> printf("□");</p><p> printf("\n");</p><p> for(xi=0,xj=0;xj<((2*n-1)*(2*n-1));xj++,xi++)</p><p><b> {</b></p>
53、;<p> if(0 == xi)</p><p><b> {</b></p><p> Format_Limit();</p><p> printf("□");</p><p><b> }</b></p><p> pri
54、ntf("%s",str[xj]);</p><p> if(xi==2*n-2)</p><p><b> {</b></p><p> printf("□\n");</p><p><b> xi=-1; </b></p><p
55、><b> }</b></p><p><b> }</b></p><p> Format_Limit();</p><p> for(i =0 ;i <= n*2 ;i++)</p><p> printf("□");</p><p&
56、gt; printf("\n");</p><p><b> return 1;</b></p><p><b> }</b></p><p> int PPMF()// 打印出迷宮圖形</p><p><b> {</b></p>
57、<p> printf("\t\t\t\t[迷宮為]\n\t\t\t ●表可走,□表不可走 \n");</p><p> Initialization();</p><p> Print_Maze_Figure();</p><p><b> return 1;</b></p><p&g
58、t;<b> }</b></p><p> int Save_Path()// 將路徑保存在str[][]中并打印出路徑迷宮圖形</p><p><b> {</b></p><p> printf("\t\t\t [迷宮路徑圖]\n(%d,%d)至(%d,%d)\t\t ●表可走,□表不可走 \
59、n",s.x,s.y,t.x,t.y);</p><p> Initialization();</p><p> strcpy(str[2*s.x*(2*n-1)+2*s.y],"起");</p><p> strcpy(str[2*t.x*(2*n-1)+2*t.y],"終");</p><
60、;p> for(int wri=0;wri<ri;wri++)</p><p><b> {</b></p><p> if(re[wri].rx<re[wri+1].rx&&re[wri].ry==re[wri+1].ry)</p><p> strcpy(str[2*re[wri].rx*(2*n-
61、1)+(2*n-1)+2*re[wri].ry],"↑");</p><p> if(re[wri].rx==re[wri+1].rx&&re[wri].ry<re[wri+1].ry)</p><p> strcpy(str[2*re[wri].rx*(2*n-1)+2*re[wri+1].ry-1],"←");</
62、p><p> if(re[wri].rx>re[wri+1].rx&&re[wri].ry==re[wri+1].ry)</p><p> strcpy(str[2*re[wri].rx*(2*n-1)-(2*n-1)+2*re[wri].ry],"↓");</p><p> if(re[wri].rx==re[wri+1
63、].rx&&re[wri].ry>re[wri+1].ry)</p><p> strcpy(str[2*re[wri].rx*(2*n-1)+2*re[wri].ry-1],"→");</p><p> if(re[wri].rx<re[wri+1].rx&&re[wri].ry<re[wri+1].ry)<
64、/p><p> strcpy(str[2*re[wri].rx*(2*n-1)+(2*n-1)+1+2*re[wri].ry],"↖");</p><p> if(re[wri].rx<re[wri+1].rx&&re[wri].ry>re[wri+1].ry)</p><p> strcpy(str[2*re[wr
65、i].rx*(2*n-1)+(2*n-1)-1+2*re[wri].ry],"↗");</p><p> if(re[wri].rx>re[wri+1].rx&&re[wri].ry<re[wri+1].ry)</p><p> strcpy(str[2*re[wri].rx*(2*n-1)-(2*n-2)+2*re[wri].ry],&
66、quot;↙");</p><p> if(re[wri].rx>re[wri+1].rx&&re[wri].ry>re[wri+1].ry)</p><p> strcpy(str[2*re[wri].rx*(2*n-1)-(2*n-1)-1+2*re[wri].ry],"↘");</p><p>&l
67、t;b> }</b></p><p> Print_Maze_Figure();</p><p><b> return 1;</b></p><p><b> }</b></p><p><b> //隊列</b></p><p
68、> int Init()// 從文件中植入數(shù)據(jù) 完成對Map迷宮圖的結(jié)構(gòu)</p><p><b> {</b></p><p> FILE *pf;int i,j;</p><p> pf = fopen("maze.txt","r");</p><p> if
69、(pf==NULL)return 0;</p><p> fscanf(pf,"%d",&n);</p><p> for(i = 0;i < n; i++)</p><p> for(j = 0 ; j < n; j++)</p><p><b> {</b></p
70、><p> Used[i][j] = false;</p><p> fscanf(pf,"%d",&Map[i][j]);</p><p><b> }</b></p><p> fclose(pf);</p><p><b> return 1;&l
71、t;/b></p><p><b> }</b></p><p> int Judge()//判斷輸入的起點終點是否符合實際</p><p><b> {</b></p><p> bool flag = true;</p><p> if(s.x<0|
72、|s.x>=n||s.y<0||s.y>=n){printf("起點越界,不符合!\n");flag = false;}</p><p> else if(t.x<0||t.x>=n||t.y<0||t.y>=n){printf("終點越界,不符合!\n");flag = false;}</p><p>
73、 else if(Map[s.x][s.y]){printf("起點是墻,不符合!\n");flag = false;}</p><p> else if(Map[t.x][t.y]){printf("終點是墻,不符合!\n");flag = false;}</p><p> else if(s.x==t.x&&s.y==t.y)
74、{printf("起點是終點,不符合!\n");flag = false;}</p><p><b> if(!flag)</b></p><p> {printf("是則再輸入\\否則退出程序:(Y/N)\n");</p><p> char ch[20];</p><p&g
75、t; scanf("%s",ch);</p><p> if(ch[0] == 'Y'||ch[0] =='y')return 1;</p><p> else return 0;</p><p><b> }</b></p><p><b> re
76、turn 2;</b></p><p><b> }</b></p><p> int main()</p><p><b> {</b></p><p><b> char ch;</b></p><p> int i,j,ste
77、p;</p><p> printf("\t\t\t<請按提示操作>\n");</p><p> next:system("pause");</p><p> system("cls");</p><p> printf("是否使用系統(tǒng)提供的迷宮圖:(Y
78、/N)\n");</p><p> ch = getch();</p><p> if(ch == 'Y'||ch =='y')</p><p><b> Init();</b></p><p><b> else</b></p>&l
79、t;p><b> {</b></p><p> printf("請輸入迷宮的大小:(n*n)");</p><p> scanf("%d",&n);</p><p> printf("\t請輸入迷宮的結(jié)構(gòu)0,1表示0是路1是墻\n");</p>&l
80、t;p> for(i = 0;i < n; i++)</p><p> for(j = 0 ; j < n; j++)</p><p><b> {</b></p><p> Used[i][j] = false;</p><p> scanf("%d",&Map[
81、i][j]);</p><p><b> }</b></p><p><b> }</b></p><p> bool flag=true;</p><p> while(flag)</p><p><b> {</b></p>
82、<p> for(i =0 ;i < n;i++)</p><p> for(j =0 ;j < n ;j++)</p><p> Used[i][j] = false;</p><p><b> ri = -1;</b></p><p> system("pause"
83、);</p><p> system("cls");</p><p> printf("是否顯示原始迷宮:(Y/N)\n");</p><p> ch = getch();</p><p> if(ch == 'Y'||ch =='y')</p>&
84、lt;p><b> PPMF();</b></p><p> again:printf("請輸入起點與終點:(x1 y1 x2 y2)");</p><p> scanf("%d %d %d %d",&s.x,&s.y,&t.x,&t.y);</p><p>
85、 if(1==Judge())goto again;</p><p><b> else</b></p><p> if(0==Judge())break;</p><p> printf("請選擇4方向還是8方向的迷宮:");</p><p> scanf("%d",&
86、amp;step);</p><p> if(8==step)step=8;</p><p> else step = 4;</p><p> system("pause");</p><p> system("cls");</p><p> BFS(step);<
87、;/p><p> Save_Path();</p><p> printf("是否繼續(xù)(Y/N)\n");</p><p> ch = getch();</p><p> if(ch != 'Y'&&ch !='y') flag = false;</p>&
88、lt;p><b> if(flag)</b></p><p> {printf("是否更換迷宮(Y/N)\n");</p><p> ch = getch();</p><p> if(ch == 'Y'||ch =='y')</p><p> got
89、o next;</p><p><b> }</b></p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p><b> /
90、*測試例子</b></p><p><b> 5</b></p><p><b> 0 0 0 0 0</b></p><p><b> 1 1 1 1 0</b></p><p><b> 0 0 0 0 0</b></p>
91、;<p><b> 0 1 1 1 1</b></p><p><b> 0 0 0 0 0</b></p><p><b> 0 0 4 4 4</b></p><p><b> 16</b></p><p> 0 0 0 0 0
92、 0 0 0 0 0 0 0 0 0 0 0</p><p> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0</p><p> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0</p><p> 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0</p><p> 0 1 0 0 0 0 0
93、 0 0 0 0 0 1 0 1 0</p><p> 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0</p><p> 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0</p><p> 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0</p><p> 0 1 0 1 0 1 0 1 1
94、 0 1 0 1 0 1 0</p><p> 0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 0</p><p> 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 0</p><p> 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0</p><p> 0 1 0 1 1 1 1 1 1 1 1
95、 1 1 0 1 0</p><p> 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0</p><p> 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0</p><p> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0</p><p><b> 0 0 8 6 4</b&
96、gt;</p><p> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p> 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p> 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0&
97、lt;/p><p> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p> 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p> 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</
98、p><p> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p> 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p> 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p>
99、;<p> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p> 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p><p> 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1</p><p> 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0</p>&
100、lt;p> 0 0 15 15 8</p><p> 0 0 14 0 8</p><p> 0 1 0 1 0 1 0 1</p><p> 1 0 1 0 1 0 1 1</p><p> 1 0 1 1 1 1 1 1</p><p> 1 0 0 0 1 0 1 0</p>&l
101、t;p> 0 1 1 1 1 1 0 1</p><p> 1 0 1 1 1 1 1 1</p><p> 0 1 1 1 0 1 0 1</p><p> 1 0 1 0 1 0 1 0</p><p><b> 0 0 7 9 8</b></p><p> 0 0 0 0
102、1 0 1 0 1 1 1 0 1 1 1 0</p><p> 1 1 1 0 0 0 1 0 1 1 1 0 1 1 1 0</p><p> 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0</p><p> 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0</p><p> 0 0 0 1 0 0
103、1 0 1 1 1 0 0 0 0 1</p><p> 1 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0</p><p> 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0</p><p> 0 0 0 0 0 1 0 1 1 1 1 0 1 1 1 0</p><p> 0 0 0 1 0 1 0 1
104、0 0 0 0 1 1 0 0</p><p> 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1</p><p> 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0</p><p> 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0</p><p> 0 0 0 1 0 0 0 0 1 0
105、1 0 0 1 0 0</p><p> 0 1 1 0 0 1 1 1 0 0 0 1 0 1 0 0</p><p> 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0</p><p> 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0</p><p> 0 11 0 15 4</p>&
106、lt;p> 0 11 0 15 8</p><p> 0 2 14 12 4</p><p> 0 2 14 12 8</p><p> 0 0 0 15 4</p><p> 0 0 0 15 8</p><p><b> */</b></p><p>
107、 返回課程設(shè)計任務(wù)書及成績評定</p><p> 課題名稱: 迷宮求解 </p><p> 完成者: 李小鋒、田芳、黃健、周國柱 </p><p> 1、設(shè)計的目的與要求: </p><
108、p> 靈活應用所學數(shù)據(jù)結(jié)構(gòu)知識,獨立完成問題分析。</p><p> 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等方法。</p><p> 訓練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā)。</p><p> 提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力。</p><p><b> 設(shè)計進度及
109、完成情況</b></p><p><b> 3、成績評定: </b></p><p> 設(shè)計成績: (教師填寫)</p><p> 指導老師: (簽字)</p><p> 二00 年 月 日</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(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è)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---迷宮
- 迷宮問題——數(shù)據(jù)結(jié)構(gòu)課程設(shè)計迷宮問題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(迷宮問題)
評論
0/150
提交評論