九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

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

  • 資源ID:83799099       資源大?。?span id="24d9guoke414" class="font-tahoma">109.50KB        全文頁數(shù):8頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

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

word實(shí)現(xiàn)順序?;蜓h(huán)隊(duì)列的存儲(chǔ)一 需求分析理解棧的特性“后進(jìn)先出 和隊(duì)列的特性“先進(jìn)先出。僅僅認(rèn)識(shí)到棧和隊(duì)列是兩種特殊的線性表是遠(yuǎn)遠(yuǎn)不夠的,本次實(shí)驗(yàn)的目的在于更深入的了解棧和隊(duì)列的特性,以便在實(shí)際問題背景下靈活運(yùn)用他們。在了解他特性的根底上,還將鞏固對(duì)這種結(jié)構(gòu)的構(gòu)造方法的理解。要求:在國際象棋8×8棋盤上面,按照國際象棋規(guī)如此中馬的行進(jìn)規(guī)如此,實(shí)現(xiàn)從任意初始位置,每個(gè)方格只進(jìn)入一次,走遍棋盤上全部64個(gè)方格。編制程序,求出馬的行走路線,并按求出的行走路線,將數(shù)字1,2,64依次填入一個(gè)8×8的方陣,并輸出它的行走路線棋盤如下列圖。輸入:任意一個(gè)起始位置;輸出:無重復(fù)踏遍棋盤的結(jié)果,以數(shù)字1-64表示行走路線。 012345670  8 1   1 7   2  2   H    3 6   3  4  5 4   5        6        7        二 概要設(shè)計(jì)為了實(shí)現(xiàn)上述程序功能,可以采用順序?;蛘哝湕泶鎯?chǔ)它的數(shù)據(jù),本實(shí)驗(yàn)所需要的存儲(chǔ)空間不是很大,不需動(dòng)態(tài)的開辟很多空間,所以采用相對(duì)簡單的順序棧來存儲(chǔ)數(shù)據(jù),既方便有簡單,而用鏈棧在實(shí)現(xiàn)上相比照順序棧復(fù)雜的一點(diǎn)。2.1順序棧的抽象數(shù)據(jù)類型定義:ADT Stack數(shù)據(jù)對(duì)象:D=ai| ai0,1,9,i=0,1,2,n,n0數(shù)據(jù)關(guān)系:R=< ai-1, ai >| ai-1, aiD,i=1,2,n ADT Stack2.2本程序包含三個(gè)模塊:1、主程序模塊:void main()定義變量;承受命令;處理命令;退出; 2、起始坐標(biāo)函數(shù)模塊馬兒在棋盤上的起始位置;3、探尋路徑函數(shù)模塊馬兒每個(gè)方向進(jìn)展嘗試,直到試完整個(gè)棋盤;4、輸出路徑函數(shù)模塊輸出馬兒行走的路徑; 2.3各模塊之間的調(diào)用關(guān)系:主程序模塊 輸入的初始位置是否正確 否起始坐標(biāo)函數(shù)模塊 是 探尋路徑函數(shù)模塊 輸出路徑函數(shù)模塊塊 完畢三 詳細(xì)設(shè)計(jì)#include<stdio.h>#define MAXSIZE 100#define N 8int board88; /定義棋盤int Htry18=1,-1,-2,2,2,1,-1,-2;/*存儲(chǔ)馬各個(gè)出口位置相對(duì)當(dāng)前位置行下標(biāo)的增量數(shù)組*/int Htry28=2,-2,1,1,-1,-2,2,-1; /*存儲(chǔ)馬各個(gè)出口位置相對(duì)當(dāng)前位置列下標(biāo)的增量數(shù)組*/struct Stack /定義棧類型 int i; /行坐標(biāo)int j; /列坐標(biāo)int director; /存儲(chǔ)方向stackMAXSIZE; /定義一個(gè)棧數(shù)組int top=-1; /棧指針void InitLocation(int xi,int yi); /馬兒在棋盤上的起始位置坐標(biāo)int TryPath(int i,int j); /馬兒每個(gè)方向進(jìn)展嘗試,直到試完整個(gè)棋盤void Display(); /輸出馬兒行走的路徑void InitLocation(int xi,int yi)int x,y; /定義棋盤的橫縱坐標(biāo)變量top+; /棧指針指向第一個(gè)棧首stacktop.i=xi; /將起始位置的橫坐標(biāo)進(jìn)棧stacktop.j=yi; /將起始位置的縱坐標(biāo)進(jìn)棧stacktop.director=-1; /將起始位置的嘗試方向賦初值boardxiyi=top+1; /標(biāo)記棋盤x=stacktop.i; /將起始位置的橫坐標(biāo)賦給棋盤的橫坐標(biāo)y=stacktop.j; /將起始位置的縱坐標(biāo)賦給棋盤的縱坐標(biāo)if(TryPath(x,y) /調(diào)用馬兒探尋函數(shù),如果馬兒探尋整個(gè)棋盤返回1否如此返回0Display(); /輸出馬兒的行走路徑else printf("無解"); int TryPath(int i,int j)int find,director,number,min;/定義幾個(gè)臨時(shí)變量int i1,j1,h,k,s; /定義幾個(gè)臨時(shí)變量int a8,b18,b28,d8;/定義幾個(gè)臨時(shí)數(shù)組while(top>-1) /棧不空時(shí)循環(huán)for(h=0;h<8;h+) /用數(shù)組a8記錄當(dāng)前位置的下一個(gè)位置的可行路徑的條數(shù)number=0; i=stacktop.i+Htry1h; j=stacktop.j+Htry2h; b1h=i; b2h=j; if(boardij=0&&i>=0&&i<8&&j>=0&&j<8) /如果找到下一位置for(k=0;k<8;k+)i1=b1h+Htry1k; j1=b2h+Htry2k; if(boardi1j1=0&&i1>=0&&i1<8&&j1>=0&&j1<8) /如果找到下一位置 number+; /記錄條數(shù) ah=number; /將條數(shù)存入數(shù)組a8中 for(h=0;h<8;h+) /根據(jù)可行路徑條數(shù)小到大按下表排序放入數(shù)組d8中min=9; for(k=0;k<8;k+)if(min>ak) min=ak; dh=k; /將下表存入數(shù)組d8中 s=k; as=9;director=stacktop.director;if(top>=63) /如果走完整個(gè)棋盤返回1return (1);find=0; /表示沒有找到下一個(gè)位置for(h=director+1;h<8;h+) /向八個(gè)方向進(jìn)展探尋i=stacktop.i+Htry1dh; j=stacktop.j+Htry2dh;if(boardij=0&&i>=0&&i<8&&j>=0&&j<8) /如果找到下一位置find=1; /表示找到下一個(gè)位置break;if(find=1) /如果找到下一個(gè)位置進(jìn)棧stacktop.director=director; /存儲(chǔ)棧結(jié)點(diǎn)的方向 top+; /棧指針前移進(jìn)棧stacktop.i=i;stacktop.j=j;stacktop.director=-1; /重新初始化下一棧結(jié)點(diǎn)的嘗試方向boardij=top+1; /標(biāo)記棋盤else /否如此退棧boardstacktop.istacktop.j=0; /去除棋盤的標(biāo)記top-; /棧指針前移退棧return (0);void Display()int i,j; for(i=0;i<N;i+)for(j=0;j<N;j+)printf("t%d ",boardij); /輸出馬兒在棋盤上走過的路徑printf("nn");printf("n");void main()int i,j;int x,y;for(i=0;i<N;i+) /初始化棋盤 for(j=0;j<N;j+) boardij=0;for(;)printf("Please input importpoint(1<=x<=8 and 1<=y<=8)n");printf("Input x = ");scanf("%d",&x); /輸入起始位置的橫坐標(biāo)printf("Input y = ");scanf("%d",&y); /輸入起始位置的縱坐標(biāo)if(x>=1&&x<=8&&y>=1&&y<=8)break;printf("Your input is worng!n");printf("begin with %d board:nn", 8*(x-1)+y);InitLocation(x-1,y-1); /調(diào)用起始坐標(biāo)函數(shù)四 調(diào)試分析1本次實(shí)驗(yàn)的主要目的是在于掌握和理解棧的特性和它的應(yīng)用。在編制該程序中遇到了很多問題。首先,在開始剛編制程序的時(shí)候遇到的問題是,程序編譯都通不過,主要在一些細(xì)節(jié)的問題上,還有在程序的返回值在剛開始時(shí)也沒有正確返回。經(jīng)過編譯慢慢調(diào)試,編譯都能通過,沒有錯(cuò)誤和警告。2雖然編譯都能通過,但是運(yùn)行時(shí)卻出錯(cuò),程序不能終止,只有通過人工方式完畢程序,可能是在某些地方出現(xiàn)了無限死循環(huán)了,然后在仔細(xì)檢查代碼,發(fā)現(xiàn)沒有標(biāo)記馬兒嘗試的方向director,這樣的話,馬兒回溯的時(shí)候,下一次又有可能走那個(gè)方向,這樣就出現(xiàn)了死循環(huán)。3標(biāo)記好馬兒嘗試的方向后,編譯運(yùn)行,但是運(yùn)行結(jié)果卻不符合程序所要求的結(jié)果,說明在算法上肯定有錯(cuò)誤,檢查發(fā)現(xiàn),馬兒走的坐標(biāo)沒有控制后,它的橫縱坐標(biāo)必須控制0到7之間,否如此的話馬兒就會(huì)踏出棋盤以外,這樣輸出的結(jié)果就不對(duì)。還有就是棋盤走過的位置要標(biāo)記一下,以便下次走不重復(fù)走,當(dāng)回溯的時(shí)候的記得把標(biāo)記給清掉,這個(gè)地方有時(shí)候也很容易混淆。4還有一點(diǎn)就是,該程序運(yùn)算量大,算法復(fù)雜度高,所以運(yùn)行的時(shí)候很慢,特別占內(nèi)存,CPU的使用也很高,幾乎都在70%到90%之間,配置低了可能還運(yùn)行不了。五 測試結(jié)果結(jié)果1:結(jié)果2:六 實(shí)驗(yàn)體會(huì)通過本次實(shí)驗(yàn)的編寫,能夠掌握棧的性質(zhì)以與它的應(yīng)用。這次實(shí)驗(yàn)花了很多時(shí)間才完成,其實(shí)本應(yīng)該早完成的,在檢查的過程中有多多少少修改完美了一下,不過算法思想?yún)s沒有改變。這個(gè)程序也讓我頭疼了幾次,就是運(yùn)行速度很慢,要等很久才能輸出結(jié)果,這樣的話很占內(nèi)存資源,而且CPU的使用記錄也很高,主要是它需要的運(yùn)算太多,所以CPU 使用記錄也是很高的。雖然我也參考了一些優(yōu)化的算法,可以找到最優(yōu)路進(jìn)走,但是這些最優(yōu)算法都和棧的應(yīng)用失去了聯(lián)系,本次的實(shí)驗(yàn)主要目的就是要了解棧,所以不用棧來寫該程序就失去了該實(shí)驗(yàn)的意義。在該程序的編制過程中留下了一些思考的問題,就是馬兒從一個(gè)起點(diǎn)位置開始探尋,最后馬兒探尋成功的路徑會(huì)不會(huì)是不只一條路徑,可能還有多條路徑,由于時(shí)間和精力的限制沒有去深究,但是這應(yīng)該值的思考的。在用順序棧來實(shí)現(xiàn)該程序之前,也嘗試過用鏈棧來做,但是發(fā)現(xiàn)如果用鏈棧來做的話,在存儲(chǔ)調(diào)用的時(shí)候不是很方便,或許用鏈棧來做應(yīng)該是對(duì)自己的一種挑戰(zhàn)。盡管沒有用鏈棧做不過,用順尋棧來做在編制該程序中也收獲不小。 8 / 8

注意事項(xiàng)

本文(大數(shù)據(jù)結(jié)構(gòu)馬踏棋盤)為本站會(huì)員(仙***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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