版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱 : 實(shí)驗(yàn)二 八皇后問題學(xué)生姓名 :班級:班內(nèi)序號 :學(xué)號:日期: 2014年11月27日1實(shí)驗(yàn)要求【實(shí)驗(yàn)?zāi)康?】進(jìn)一步掌握指針、模板類 、異常處理的使用掌握棧的操作的實(shí)現(xiàn)方法掌握隊(duì)列的操作的實(shí)現(xiàn)方法學(xué)習(xí)使用棧解決實(shí)際問題的能力學(xué)習(xí)使用隊(duì)列解決實(shí)際問題的能力【實(shí)驗(yàn)內(nèi)容 】利用棧結(jié)構(gòu)實(shí)現(xiàn)八皇后問題。八皇后問題19 世紀(jì)著名的數(shù)學(xué)家高斯于1850 年提出的 。 他的問題是 :在 8*8 的棋盤上放置8 個皇后 ,使其不能互相攻擊,即任意兩個皇后都不能處于同一行、同一列 、同一斜線上 。 請?jiān)O(shè)計(jì)算法打印所有可能的擺放方法。提示 :1、可以使用遞歸或非遞歸兩種方法實(shí)現(xiàn)2、實(shí)現(xiàn)
2、一個關(guān)鍵算法:判斷任意兩個皇后是否在同一行、同一列和同一斜線上2. 程序分析.專業(yè) .專注.2.1 存儲結(jié)構(gòu)存儲結(jié)構(gòu) :棧(遞歸)2.2 關(guān)鍵算法分析遞歸調(diào)用擺放皇后1、關(guān)鍵算法偽代碼:( 1 ) .如果輸入的 row 大于皇后的數(shù)量 ,則輸出皇后的位置( 2 ) 否則 col 從 0 開始遞增(3)檢測 ( row , col )上的點(diǎn)是否符合條件,不符合則col 自增 ,符合則轉(zhuǎn)到下一個皇后的排列2、代碼詳細(xì)分析:void SeqStack:PlaceQueen(int row)/ 擺放皇后.專業(yè) .專注.for (int col=0;col n;col+)/ 遍歷 07 ,Push(co
3、l);if (Check()/ 判斷擺放皇后的位置是否合適if (row n-1)/ 若還沒有放到最后一個,則進(jìn)行下一個皇后的放置PlaceQueen(row+1);elsenum+;/ 計(jì)數(shù)器加1Print(n);/ 打印成功的坐標(biāo)點(diǎn)Pop();/ 若不符合條件則出棧3、計(jì)算時間復(fù)雜度: O(n2) 判斷皇后位置是否合適:1、 關(guān)鍵算法偽代碼:.專業(yè) .專注.對于一個坐標(biāo) ,將前面每一個坐標(biāo)均與這個坐標(biāo)比較若在同一列或在同一斜線上,則返回 0,否則 j 自增 1 ,面每一個坐標(biāo)與前面做比較若與前面坐標(biāo)在同一列最后返回2、 代碼分析 :bool SeqStack:Check()for(inti
4、=0;itop;i+)/ 依次檢查前面已擺放的皇后位置if(datatop=datai|(abs(datatop-datai)=(top-i)/ 判斷是否在同一列同一斜線return false;return true;3、 時間復(fù)雜度 : O(n)2.3 其他說明 :由于輸出顯示時對話框有限,而程序結(jié)果比較多,占用空間大,運(yùn)用輸出坐標(biāo)位置來表示 ,則可以輸出全部解。3. 程序運(yùn)行結(jié)果( 1)程序框圖 :.專業(yè) .專注.開始輸入 nY判斷是否滿行輸出結(jié)果N判斷位置 qrowNcol+是否符合要求Yqrow=colrow+(2)程序代碼 :#include using namespace std
5、;const int m=1024;/ 定義棧的最大高度int num=0;/ 初始化方案種類計(jì)數(shù)器int n;/ 擺放的皇后個數(shù)class SeqStack/ 定義.專業(yè) .專注.順序棧public:SeqStack()top=-1;/ 構(gòu)造函數(shù),初始化空棧void Push(int x);/ 入棧void Pop();/ 出棧void PlaceQueen(int row);/ 擺放皇后的遞歸函數(shù)boolCheck();/ 判斷是否在同一行同一列同一斜線void Print(int n);/ 打印以坐標(biāo)的形式bool Empty();/ 判別棧是否為空private:int datam;/
6、 定義數(shù)組int top;/ 棧頂指針;void SeqStack:Push(int x)/ 入棧操作.專業(yè) .專注.if(top= m-1) throw 上溢 ;top+;/ 棧頂指針上移datatop=x;void SeqStack:Pop()/ 出棧操作if(Empty() throw 下溢 ;top-;/ 棧頂指針下移void SeqStack:PlaceQueen(int row)/ 擺放皇后for (int col=0;col n;col+)/ 遍歷 07 ,Push(col);if (Check()/ 判斷擺放皇.專業(yè) .專注.后的位置是否合適if(rown-1)/ 若還沒有放到
7、最后一個 ,則進(jìn)行下一個皇后的放置PlaceQueen(row+1);elsenum+;/ 計(jì)數(shù)器加 1Print(n);/ 打印成功的坐標(biāo)點(diǎn)Pop();/ 若不符合條件則出棧bool SeqStack:Empty()if(top=-1)return true;.專業(yè) .專注.elsereturn false;bool SeqStack:Check()for(inti=0;itop;i+)/ 依次檢查前面已擺放的皇后位置if(datatop=datai|(abs(datatop-datai)=(top-i)/ 判斷是否在同一列同一斜線return false;return true;void
8、SeqStack:Print(int n)/ 將棧的數(shù)組形式打印成坐標(biāo)int i;for(i=1;i=n;i+)cout(i,datai-1+1);coutendl;.專業(yè) .專注.void main() cout0 )n;if(n1024)cout 輸入錯誤 endl;SeqStack Queen;/ 定義類的對象Queen.PlaceQueen(0);/ 從棧底開始賦值coutQueen可能的擺放位置種類:numendl;/ 輸出擺放方法的總數(shù)( 3)運(yùn)行結(jié)果 :.專業(yè) .專注.專業(yè) .專注.專業(yè) .專注.4. 總結(jié)調(diào)試時出現(xiàn)的問題: 最初由于遞歸的思想未能很好掌握,導(dǎo)致幾次調(diào)試都出現(xiàn)比較嚴(yán)重的錯誤 ;且在運(yùn)用該方法時,未能將八皇后問題的具體思路搞清,沒有考慮 “如果前次的皇后放置錯誤導(dǎo)致后面的放置無論如何都不能滿足要求,在設(shè)計(jì)遞歸算法總是只顯示幾種,為了將 92 種情形全部打印,采用坐標(biāo)的形式。使用了棧的存儲結(jié)構(gòu)來存儲位置的縱坐標(biāo),不符合時將其出棧,要注意棧是否為空??偨Y(jié) :這次實(shí)驗(yàn)讓我更好地掌
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小司機(jī)孵化課課程設(shè)計(jì)
- 液壓課程設(shè)計(jì)總結(jié)感悟
- 溫度檢測控制課程設(shè)計(jì)
- 外貿(mào)內(nèi)訓(xùn)課程設(shè)計(jì)
- 液位過程控制課程設(shè)計(jì)
- 幼兒園自然田野課程設(shè)計(jì)
- 幼兒園秋游計(jì)劃課程設(shè)計(jì)
- 智能家居信息課程設(shè)計(jì)
- 文秘信息化課程設(shè)計(jì)
- 2024年P(guān)VC塑料白板項(xiàng)目可行性研究報(bào)告
- GB/T 45076-2024再生資源交易平臺建設(shè)規(guī)范
- 2024-2025學(xué)年語文二年級上冊 部編版期末測試卷 (含答案)
- cecs31-2017鋼制電纜橋架工程設(shè)計(jì)規(guī)范
- 采礦學(xué)課程設(shè)計(jì)陳四樓煤礦1.8mta新井設(shè)計(jì)(全套圖紙)
- 軍人體型標(biāo)準(zhǔn)對照表
- 淺談吉林省中藥材產(chǎn)業(yè)發(fā)展
- 學(xué)生學(xué)習(xí)評價(jià)量表模板
- 圖形找規(guī)律專項(xiàng)練習(xí)60題(有答案)
- 最新版《機(jī)車網(wǎng)絡(luò)控制》考試試卷【一】
- RCS系列同期壓并壓切輔助裝置說明書
- 普通發(fā)票銷售清單
評論
0/150
提交評論