




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、算法大作業(yè)電子工程學(xué)院A.實(shí)驗(yàn)內(nèi)容在n×n格的棋盤上放置彼此不受攻擊的n個(gè)皇后,按照國際象棋的規(guī)則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子,求解可以放置的方法種數(shù)。B.問題分析n后問題等于于在n×n格的棋盤上放置n個(gè)皇后,任何2個(gè)皇后不放在同一行或同一列或同一斜線上。即規(guī)定每一列放一個(gè)皇后,不會(huì)造成列上的沖突;當(dāng)?shù)趇行被某個(gè)皇后占領(lǐng)后,則同一行上的所有空格都不能再放皇后,要把以i為下標(biāo)的標(biāo)記置為被占領(lǐng)狀態(tài)。C.算法設(shè)計(jì)1. 解決沖突問題: 這個(gè)問題包括了行,列,兩條對角線; 列:規(guī)定每一列放一個(gè)皇后,不會(huì)造成列上的沖突; 行:當(dāng)?shù)趇行被某個(gè)皇后占領(lǐng)后,則同一行
2、上的所有空格都不能再放皇后,要把以i為下標(biāo)的標(biāo)記置為被占領(lǐng)狀態(tài); 對角線:對角線有兩個(gè)方向。在這我把這兩條對角線稱為:主對角線和從對角線。在同一對角線上的所有點(diǎn)(設(shè)下標(biāo)為(i,j)),要么(i+j)是常數(shù),要么(i-j)是常數(shù)。因此,當(dāng)?shù)趇個(gè)皇后占領(lǐng)了第j列后,要同時(shí)把以(i+j)、(i-j)為下標(biāo)的標(biāo)記置為被占領(lǐng)狀態(tài)。 2. 算法設(shè)計(jì) 因?yàn)閚皇后問題,從n大于11開始求解過程耗時(shí)就很長,所以定義x數(shù)組的最大值MAXNUM=30;即最大可解決30皇后問題。1) 判斷當(dāng)前位置是否可放置皇后皇后k在第k行第xk列時(shí),xi=xk 時(shí),兩皇后在同一列上;abs(xi-xk)=abs(i-k)時(shí),兩皇后
3、在同一斜線上;兩種情況兩皇后都可相互攻擊,返回false表示不符合條件。bool Place(int k)int i;i=1;while(i<k)if(xi=xk|abs(xi-xk)=abs(i-k)return false;i=i+1;return true;2) 輸出當(dāng)前解void Print(int x,int n)num+;printf("第%dt種解法:(",num);for(int i=1;i<=n;i+)printf("%d,",xi);if(i%n=0)printf(");n");3) 回溯法搜索解空間v
4、oid NQueens(int n)int k=1;x1=0;while(k>0)xk+=1;while(xk<=n&&!Place(k)xk+=1;if(xk<=n)if(k=n)Print(x,n);elsek=k+1;xk=0;/回溯至上一行;elsek-;3. 實(shí)驗(yàn)結(jié)果及分析n皇后問題解的情況皇后的個(gè)數(shù)問題的解N=1X=(1)N=2無解N=3無解N=4X1=(2,4,1,3); X2=(3,1,4,2)N=5X1=(1,3,5,2,4); X2=(1,4,2,5,3); X3=(2,4,1,3,5); X4=(2,5,3,1,4);X5=(3,1,4,
5、2,5); X6=(3,5,2,4,1); X7=(4,1,3,5,2); X8=(4,2,5,3,1);X9=(5,2,4,1,3); X10=(5,3,1,4,2)N=6X1=(2,4,6,1,3,5);X2=(3,6,2,5,1,4);X3=(4,1,5,2,6,3);X4=(5,3,1,6,4,2)N=740個(gè)解N=892個(gè)解4. 實(shí)驗(yàn)程序隨著N 的增大,解的個(gè)數(shù)增多,以N=4為例#include <stdio.h>#include<math.h>#define N 4 /* 定義棋盤大小 */static int sum; /* 當(dāng)前已找到解的個(gè)數(shù) */sta
6、tic int xN; int place(int k) int j; for (j = 0; j < k; j +) if (xj = xk | abs(j - k) = abs(xj - xk) return 0; return 1;/* 打印棋局 */ void chessboard() int i,j;int siteN; printf("第%d種解法:n", + sum); for (i = 0; i < N; i +) for (j = 0; j < N; j +) if (j = xi) printf("Q ");site
7、i=j+1; else printf("* "); printf("n"); printf("A%d(",sum); for(i = 0; i < N; i +) printf("%d,",sitei); printf(");"); printf("n");/* 回溯搜索解空間 */void backtrack() int k = 0; x0 = -1; while (k >= 0) xk += 1; /* 向右移一列 */ /* 向右移至出最右列或可以放置皇后的列 */ while (xk < N) && !(place(k) xk += 1; if (xk < N) /* 向右移未移出棋盤 */ if (k = N - 1) chessboard(); /* 已移至最后一行 */ else x+ k = -1; /* 向下移一行 */ else k -; /* 回溯到上一行 */ int main(void) backtrack();printf("%d皇后有%d個(gè)解:n",N,sum); return 0;實(shí)驗(yàn)結(jié)果截圖:5. 流程圖通過算法老師布置的這次大作業(yè),首先使我們更好地
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨領(lǐng)域合作下的設(shè)計(jì)軟件發(fā)展趨勢分析
- 超市火源管理與防火監(jiān)督的實(shí)踐探索
- 內(nèi)蒙古2025年01月內(nèi)蒙古東烏珠穆沁旗事業(yè)單位引進(jìn)9名急需緊缺人才筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 跨學(xué)科合作在提高血液透析安全管理中的應(yīng)用
- 小學(xué)英語課堂游戲單詞字母句子類游戲陷阱
- 高中語文情感美文守護(hù)你一輩子
- 初中語文文言文庭中有奇樹原文譯文與詩詞鑒賞
- 非營利組織的財(cái)務(wù)管理技巧與實(shí)務(wù)
- 學(xué)校畢業(yè)聯(lián)歡會(huì)主持人開場白模板(30篇)
- 高效財(cái)務(wù)管理軟件應(yīng)用實(shí)戰(zhàn)指南
- 網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評估報(bào)告模板
- 蘋果種植養(yǎng)護(hù)培訓(xùn)課件
- 什么是法律談判課件
- 成考教材-數(shù)學(xué)教程(文史財(cái)經(jīng)類)
- 保安服務(wù)管理制度范文
- 汽車行業(yè)維修記錄管理制度
- 老年護(hù)理團(tuán)隊(duì)建設(shè)方案
- 《跨學(xué)科實(shí)踐活動(dòng)3 水質(zhì)檢測及自制凈水器》教學(xué)設(shè)計(jì)
- 起重吊裝作業(yè)安全培訓(xùn)考核試卷
- 開塞露的使用
- 中建《質(zhì)量標(biāo)準(zhǔn)化管理手冊》水利水電工程
評論
0/150
提交評論