數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----迷宮求解_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rè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、詳細(xì)設(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>  參考文獻(xiàn)14</b></p><p><b>  附件14</b></p><p><b>  摘 要</b></p><p>  隨著計算機(jī)的高速發(fā)展,計算機(jī)能很簡便地解決很多

5、問題。C語言編程也是解決問題的一種語言。而此我們的數(shù)據(jù)結(jié)構(gòu)程序設(shè)計是解決迷宮問題。求迷宮(老鼠吃奶酪)中從入口到出口的路徑是一個經(jīng)典的程序設(shè)計問題?!皵?shù)據(jù)結(jié)構(gòu)”成為計算機(jī)程序設(shè)計的重要理論技術(shù)基礎(chǔ),它不僅是計算機(jī)學(xué)科的核心課程,而且已成為其它理工專業(yè)的熱門選修課。主要包括線性表、樹和二叉樹以及圖等基本類型的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值計算的程序設(shè)計問題中計算機(jī)的操作對象以及它們之間的關(guān)系和運算等的學(xué)科,包括數(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)可分為順序存儲和鏈?zhǔn)酱鎯深?,圖則屬于邏輯結(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)》是計算機(jī)科學(xué)與技術(shù)專業(yè)和信息管理與信息系統(tǒng)專業(yè)的必修課之一,是一門綜合性的專業(yè)基礎(chǔ)課。本課程較系統(tǒng)地介紹了軟件設(shè)計中常用的數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)的實現(xiàn)算法,如線性表、棧、隊列、樹和二叉樹,圖、檢索和排序等,并對性能進(jì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)試程序。達(dá)到滿意結(jié)果后寫報告。</p><p><b>  二、設(shè)計目的與任務(wù)</b></p><p><b>  1、設(shè)計目的是</b></p><p>  根據(jù)課堂講授內(nèi)容,學(xué)生做相應(yīng)的自主練習(xí),消化數(shù)據(jù)結(jié)構(gòu)課堂所講解的內(nèi)容;通過調(diào)試典型例題或習(xí)題積累調(diào)試C

13、程序的經(jīng)驗;通過完成輔導(dǎo)教材中的編程題,逐漸培養(yǎng)學(xué)生的編程能力、用計算機(jī)解決實際問題的能力、團(tuán)體合作能力。</p><p><b>  2、設(shè)計任務(wù)是</b></p><p>  它的任務(wù)就是訓(xùn)練學(xué)生對計算機(jī)數(shù)據(jù)對象進(jìn)行分析的能力,選擇適當(dāng)?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、標(biāo)記Used[][],輸入起點終點后可由BFS()來完成搜索。到目的點就可退出該調(diào)用程序。把每步路徑保存到Mark[][]內(nèi),通過反向進(jìn)行退步可把完整的路徑保存在結(jié)構(gòu)體result數(shù)組re[][]內(nèi),通過標(biāo)記的路徑可將串str作相應(yīng)的改變就能輸出的帶路徑的圖。</p><p>  (3) 根據(jù)二維字符數(shù)組和加標(biāo)記的位置坐標(biāo),輸出迷宮的圖形。</p><p>  (4) 該程序在獲取迷宮圖結(jié)

16、構(gòu)后,可對迷宮任意入口到出口的路線進(jìn)行搜索,主要由廣度優(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、詳細(xì)設(shè)計</b></p><p>  struct Point</p><p>  {int x,y,s;}</p><p>  這個結(jié)構(gòu)體是用來做廣度搜索的對每個迷宮節(jié)點有相應(yīng)的s(最短的步數(shù),當(dāng)然有些是不可達(dá)的)</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é)合應(yīng)用</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)鍵的細(xì)節(jié),使得在編寫程序的過程中出現(xiàn)了一些問題。對于打字有時粗心導(dǎo)致出現(xiàn)一些難以發(fā)現(xiàn)的小錯誤,在我們的耐心,細(xì)致的調(diào)試下最終使得程序能夠運行,課程設(shè)計完滿完工。</p><p>  1、問題一:求出起點到終點的路徑 </p&

22、gt;<p>  現(xiàn)象:求出的結(jié)果總是無任何現(xiàn)象</p><p>  原因:把相關(guān)重要的變量重復(fù)定義以至賦過的值被覆蓋</p><p>  問題二:常量轉(zhuǎn)義字符</p><p>  現(xiàn)象:出現(xiàn)不正常字符常量</p><p>  原因:'\'字符常量形式弄錯</p><p>  3、問題三:

23、輸入起點終點時,未判斷下標(biāo)越界就使用數(shù)據(jù)</p><p><b>  現(xiàn)象:</b></p><p>  原因:未判斷下標(biāo)越界就使用數(shù)據(jù)</p><p>  體會:在復(fù)雜的程序,都可以拆成一個個簡單的小部分,逐個擊破,再拼湊起來,在復(fù)雜的事也變的簡單了。由于本程序較大,調(diào)試時多人協(xié)作能更容易找出程序的錯誤并修改。</p><

24、p>  6、運行結(jié)果(截圖)</p><p>  將程序員錄入后,讓其運行。將會出現(xiàn)一個菜單的界面,執(zhí)行各種操作均有其對應(yīng)的代碼。要執(zhí)行何種操作只需輸入對應(yīng)的指令即可進(jìn)行,在每步操作后均會有相應(yīng)的提示。操作簡單方便實用,下面即為一些操作的示意圖。</p><p>  運行程序后出界面,運行結(jié)果如圖所示。</p><p><b>  四、結(jié) 論<

25、;/b></p><p>  經(jīng)過我們不懈的努力我們終于完成了本次課程設(shè)計,通過這次課程設(shè)計,我感覺到要真正做出一個程序并不很容易,但只要用心去做,總會有收獲,特別是當(dāng)我遇到 一個問題,想辦法去解決,最后終于找到方法時,心里的那份喜悅之情真是難以形容。編寫程序中遇到問題再所難免,應(yīng)耐心探究其中的原因,從出現(xiàn)問題的地方起,并聯(lián)系前后程序,仔細(xì)推敲,逐個排查。直到最終搞清為止。我們本次做的是迷宮求解問題,深刻的

26、體會到它的游戲可玩性。通過本次課程設(shè)計我們發(fā)現(xiàn)我們對于C語言和數(shù)據(jù)結(jié)構(gòu)還有很多地方不了解,今后繼續(xù)努力學(xué)習(xí)。</p><p><b>  五、致 謝</b></p><p>  在這里我真心的感謝xx老師對我們精心的指導(dǎo)和不倦的教育,她在我們的課程設(shè)計過程中提出了指導(dǎo)性的方案和架構(gòu),時事關(guān)注我們設(shè)計的進(jìn)程,并指引我們閱讀相關(guān)的資料和書籍,使我們的課設(shè)能夠按時順利的完

27、成。還有周國柱同學(xué)全面承擔(dān)本次課程設(shè)計的程序編寫工作,并為此付出大量的時間和精力。在這里我代表我們組全體同學(xué)對他表示感謝,同時也有組員的積極配合與協(xié)作。</p><p>  同時也感謝學(xué)校給我們這次機(jī)會,訓(xùn)練我們靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識,獨立完成問題分析的能力,讓我們學(xué)會怎樣結(jié)合數(shù)據(jù)結(jié)構(gòu)理論知識去解決實際問題。</p><p><b>  參考文獻(xiàn)</b></p

28、><p>  [1]數(shù)據(jù)結(jié)構(gòu)(C語言版)[M],嚴(yán)蔚敏等編著.清華大學(xué)出版社,2004,</p><p>  [2]數(shù)據(jù)結(jié)構(gòu)-用面向?qū)ο蠓椒ㄅcC++描述,殷人昆,陶水雷,謝若陽,盛絢華,清華大學(xué)出版社</p><p>  [3]任意N重循環(huán)的設(shè)計方法與應(yīng)用[J]--《計算機(jī)工程》,肖建華,歐陽浩,何宏,2004年22期 </p><p>  [4

29、]用人工智能中的搜索原理解決迷宮問題--《微計算機(jī)信息》,陳春梅,楊世恩,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]; //用來標(biāo)記怎么走到這個地方的 (保存的是方向的序號):0,1,2,3,4,5,6,7</p><p>  bool

33、Used[100][100];//標(biāo)記已經(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("不好意思,起點至終點無路徑不可達(dá)!!!!\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、*測試?yán)?lt;/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>  靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)知識,獨立完成問題分析。</p><p>  初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等方法。</p><p>  訓(xùn)練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā)。</p><p>  提高綜合運用所學(xué)的理論知識和方法獨立分析和解決問題的能力。</p><p><b>  設(shè)計進(jìn)度及

109、完成情況</b></p><p><b>  3、成績評定: </b></p><p>  設(shè)計成績: (教師填寫)</p><p>  指導(dǎo)老師: (簽字)</p><p>  二00 年 月 日</p>

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論