欧美精品一二区,性欧美一级,国产免费一区成人漫画,草久久久久,欧美性猛交ⅹxxx乱大交免费,欧美精品另类,香蕉视频免费播放

大數(shù)據(jù)結(jié)構(gòu)馬踏棋盤

上傳人:仙*** 文檔編號:83799099 上傳時間:2022-05-02 格式:DOC 頁數(shù):8 大?。?09.50KB
收藏 版權(quán)申訴 舉報 下載
大數(shù)據(jù)結(jié)構(gòu)馬踏棋盤_第1頁
第1頁 / 共8頁
大數(shù)據(jù)結(jié)構(gòu)馬踏棋盤_第2頁
第2頁 / 共8頁
大數(shù)據(jù)結(jié)構(gòu)馬踏棋盤_第3頁
第3頁 / 共8頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《大數(shù)據(jù)結(jié)構(gòu)馬踏棋盤》由會員分享,可在線閱讀,更多相關(guān)《大數(shù)據(jù)結(jié)構(gòu)馬踏棋盤(8頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、word 實現(xiàn)順序?;蜓h(huán)隊列的存儲 一 需求分析 理解棧的特性“后進先出〞 和隊列的特性“先進先出〞。僅僅認識到棧和隊列是兩種特殊的線性表是遠遠不夠的,本次實驗的目的在于更深入的了解棧和隊列的特性,以便在實際問題背景下靈活運用他們。在了解他特性的根底上,還將鞏固對這種結(jié)構(gòu)的構(gòu)造方法的理解。 要求:在國際象棋8×8棋盤上面,按照國際象棋規(guī)如此中馬的行進規(guī)如此,實現(xiàn)從任意初始位置,每個方格只進入一次,走遍棋盤上全部64個方格。編制程序,求出馬的行走路線,并按求出的行走路線,將數(shù)字1,2,…,64依次填入一個8×8的方陣,并輸出它的行走路線〔棋盤如下列圖〕。 輸入:任意一個起始

2、位置; 輸出:無重復踏遍棋盤的結(jié)果,以數(shù)字1-64表示行走路線。 ? 0 1 2 3 4 5 6 7 0 ? ? 8 ? 1 ? ? ? 1 ? 7 ? ? ? 2 ? ? 2 ? ? ? H ? ? ? ? 3 ? 6 ? ? ? 3 ? ? 4 ? ? 5 ? 4 ? ? ? 5 ? ? ? ? ? ? ? ? 6 ? ? ? ? ? ? ? ? 7 ? ? ? ? ? ? ? ? 二 概要設(shè)計 為了實現(xiàn)上述程

3、序功能,可以采用順序?;蛘哝湕泶鎯λ臄?shù)據(jù),本實驗所需要的存儲空間不是很大,不需動態(tài)的開辟很多空間,所以采用相對簡單的順序棧來存儲數(shù)據(jù),既方便有簡單,而用鏈棧在實現(xiàn)上相比照順序棧復雜的一點。 2.1順序棧的抽象數(shù)據(jù)類型定義: ADT Stack{ 數(shù)據(jù)對象:D={ai| ai∈〔0,1,…,9〕,i=0,1,2,…,n,n≥0} 數(shù)據(jù)關(guān)系:R={< ai-1, ai >| ai-1, ai∈D,i=1,2,…,n} } ADT Stack 2.2本程序包含三個模塊: 1、主程序模塊: void main(){ 定義變量; 承受命令; 處理命令; 退出;

4、 } 2、起始坐標函數(shù)模塊——馬兒在棋盤上的起始位置; 3、探尋路徑函數(shù)模塊——馬兒每個方向進展嘗試,直到試完整個棋盤; 4、輸出路徑函數(shù)模塊——輸出馬兒行走的路徑; 2.3各模塊之間的調(diào)用關(guān)系:主程序模塊 輸入的初始位置是否正確 否 起始坐標函數(shù)模塊 是 探尋路徑函數(shù)模塊 輸出路徑函數(shù)模塊塊

5、 完畢 三 詳細設(shè)計 #include #define MAXSIZE 100 #define N 8 int board[8][8]; //定義棋盤 int Htry1[8]={1,-1,-2,2,2,1,-1,-2}; /*存儲馬各個出口位置相對當前位置行下標的增量數(shù)組*/ int Htry2[8]={2,-2,1,1,-1,-2,2,-1}; /*存儲馬各個出口位置相對當前位置列下標的增量數(shù)組*/ struct Stack{

6、 //定義棧類型 int i; //行坐標 int j; //列坐標 int director; //存儲方向 }stack[MAXSIZE]; //定義一個棧數(shù)組 int top=-1; //棧指針 void InitLocation(int xi,int yi); //馬兒在棋盤上的起始位置坐標 int TryPath(int i,int j); //馬兒每個方向進展嘗試,直到試完整個棋盤 void D

7、isplay(); //輸出馬兒行走的路徑 void InitLocation(int xi,int yi) { int x,y; //定義棋盤的橫縱坐標變量 top++; //棧指針指向第一個棧首 stack[top].i=xi; //將起始位置的橫坐標進棧 stack[top].j=yi; //將起始位置的縱坐標進棧 stack[top].director=-1; //將起始位置的嘗試方向賦初值 board[xi][yi]=t

8、op+1; //標記棋盤 x=stack[top].i; //將起始位置的橫坐標賦給棋盤的橫坐標 y=stack[top].j; //將起始位置的縱坐標賦給棋盤的縱坐標 if(TryPath(x,y)) //調(diào)用馬兒探尋函數(shù),如果馬兒探尋整個棋盤返回1否如此返回0 Display(); //輸出馬兒的行走路徑 else printf("無解"); } int TryPath(int i,int j) { int find,director

9、,number,min;//定義幾個臨時變量 int i1,j1,h,k,s; //定義幾個臨時變量 int a[8],b1[8],b2[8],d[8];//定義幾個臨時數(shù)組 while(top>-1) //棧不空時循環(huán) { for(h=0;h<8;h++) //用數(shù)組a[8]記錄當前位置的下一個位置的可行路徑的條數(shù) { number=0; i=stack[top].i+Htry1[h]; j=stack[top].j+Htry2[h]; b1[h]=i;

10、 b2[h]=j; if(board[i][j]==0&&i>=0&&i<8&&j>=0&&j<8) //如果找到下一位置 { for(k=0;k<8;k++) { i1=b1[h]+Htry1[k]; j1=b2[h]+Htry2[k]; if(board[i1][j1]==0&&i1>=0&&i1<8&&j1>=0&&j1<8) //如果找到下一位置

11、 number++; //記錄條數(shù) } a[h]=number; //將條數(shù)存入數(shù)組a[8]中 } } for(h=0;h<8;h++) //根據(jù)可行路徑條數(shù)小到大按下表排序放入數(shù)組d[8]中 { min=9; for(k=0;k<8;k++) if(min>a[k]) { min=a[k]; d[h]=k; //將下表存入數(shù)組d[8]中 s=k

12、; } a[s]=9; } director=stack[top].director; if(top>=63) //如果走完整個棋盤返回1 return (1); find=0; //表示沒有找到下一個位置 for(h=director+1;h<8;h++) //向八個方向進展探尋 { i=stack[top].i+Htry1[d[h]]; j=stack[top].j+Htry2[d[h]]; if(board[i][

13、j]==0&&i>=0&&i<8&&j>=0&&j<8) //如果找到下一位置 { find=1; //表示找到下一個位置 break; } } if(find==1) //如果找到下一個位置進棧 { stack[top].director=director; //存儲棧結(jié)點的方向 top++; //棧指針前移進棧 stack[top].i=i; stack[top].j=j; stack[top].director=-1;

14、 //重新初始化下一棧結(jié)點的嘗試方向 board[i][j]=top+1; //標記棋盤 } else //否如此退棧 { board[stack[top].i][stack[top].j]=0; //去除棋盤的標記 top--; //棧指針前移退棧 } } return (0); } void Display() { int i,j; for(i=0;i

15、0;j

16、<=y<=8)\n"); printf("Input x = "); scanf("%d",&x); //輸入起始位置的橫坐標 printf("Input y = "); scanf("%d",&y); //輸入起始位置的縱坐標 if(x>=1&&x<=8&&y>=1&&y<=8)break; printf("Your input is worng!!!\n"); } printf("begin with %d board:\n\n", 8*(x-1)+y); InitLocation(x-1,y-1);

17、 //調(diào)用起始坐標函數(shù) } 四 調(diào)試分析 〔1〕本次實驗的主要目的是在于掌握和理解棧的特性和它的應用。在編制該程序中遇到了很多問題。首先,在開始剛編制程序的時候遇到的問題是,程序編譯都通不過,主要在一些細節(jié)的問題上,還有在程序的返回值在剛開始時也沒有正確返回。經(jīng)過編譯慢慢調(diào)試,編譯都能通過,沒有錯誤和警告。 〔2〕雖然編譯都能通過,但是運行時卻出錯,程序不能終止,只有通過人工方式完畢程序,可能是在某些地方出現(xiàn)了無限死循環(huán)了,然后在仔細檢查代碼,發(fā)現(xiàn)沒有標記馬兒嘗試的方向director,這樣的話,馬兒回溯的時候,下一次又有可能走那個方向,這樣就出現(xiàn)了死循環(huán)。 〔3〕標記

18、好馬兒嘗試的方向后,編譯運行,但是運行結(jié)果卻不符合程序所要求的結(jié)果,說明在算法上肯定有錯誤,檢查發(fā)現(xiàn),馬兒走的坐標沒有控制后,它的橫縱坐標必須控制0到7之間,否如此的話馬兒就會踏出棋盤以外,這樣輸出的結(jié)果就不對。還有就是棋盤走過的位置要標記一下,以便下次走不重復走,當回溯的時候的記得把標記給清掉,這個地方有時候也很容易混淆。 〔4〕還有一點就是,該程序運算量大,算法復雜度高,所以運行的時候很慢,特別占內(nèi)存,CPU的使用也很高,幾乎都在70%到90%之間,配置低了可能還運行不了。 五 測試結(jié)果 結(jié)果1: 結(jié)果2: 六 實驗體會 通過本次實驗的編寫,能夠掌握

19、棧的性質(zhì)以與它的應用。這次實驗花了很多時間才完成,其實本應該早完成的,在檢查的過程中有多多少少修改完美了一下,不過算法思想?yún)s沒有改變。這個程序也讓我頭疼了幾次,就是運行速度很慢,要等很久才能輸出結(jié)果,這樣的話很占內(nèi)存資源,而且CPU的使用記錄也很高,主要是它需要的運算太多,所以CPU 使用記錄也是很高的。雖然我也參考了一些優(yōu)化的算法,可以找到最優(yōu)路進走,但是這些最優(yōu)算法都和棧的應用失去了聯(lián)系,本次的實驗主要目的就是要了解棧,所以不用棧來寫該程序就失去了該實驗的意義。 在該程序的編制過程中留下了一些思考的問題,就是馬兒從一個起點位置開始探尋,最后馬兒探尋成功的路徑會不會是不只一條路徑,可能還有多條路徑,由于時間和精力的限制沒有去深究,但是這應該值的思考的。 在用順序棧來實現(xiàn)該程序之前,也嘗試過用鏈棧來做,但是發(fā)現(xiàn)如果用鏈棧來做的話,在存儲調(diào)用的時候不是很方便,或許用鏈棧來做應該是對自己的一種挑戰(zhàn)。盡管沒有用鏈棧做不過,用順尋棧來做在編制該程序中也收獲不小。 8 / 8

展開閱讀全文
溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!