




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
算法設(shè)計(jì)與分析實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:用回溯法解決八皇后問(wèn)題姓名:學(xué)號(hào):江蘇科技大學(xué)一、實(shí)驗(yàn)名稱:回溯法求解8皇后問(wèn)題二、學(xué)習(xí)知識(shí):回溯算法的根本思想是:從一條路往前走,能進(jìn)那么進(jìn),不能進(jìn)那么退回來(lái),換一條路再試?;厮莘ㄊ且粋€(gè)既帶有系統(tǒng)性又帶有跳躍性的搜索算法。它在包含問(wèn)題的所有解的解空間樹(shù)中,按照深度優(yōu)先的策略,從根結(jié)點(diǎn)出發(fā)搜索解的空間樹(shù)。算法搜索至解的空間樹(shù)的任一結(jié)點(diǎn)時(shí),總是先判斷該結(jié)點(diǎn)是否肯定不包含問(wèn)題的解。如果肯定不包含,那么跳過(guò)對(duì)以該結(jié)點(diǎn)為根的子樹(shù)的系統(tǒng)搜索,逐層向其祖先結(jié)點(diǎn)回溯。否那么,進(jìn)入該子樹(shù),繼續(xù)按深度優(yōu)先的策略進(jìn)行搜索?;厮莘ㄔ谟脕?lái)求問(wèn)題的所有解時(shí),要回溯到根,且根結(jié)點(diǎn)的所有子樹(shù)都已被搜索遍才結(jié)束。而回溯法在用來(lái)求問(wèn)題的任一解時(shí),只要搜索到問(wèn)題的一個(gè)解就可以結(jié)束。這種以深度優(yōu)先的方式系統(tǒng)地搜索問(wèn)題的解的算法稱為回溯法,它適用于解一些組合數(shù)較大的問(wèn)題。三、問(wèn)題描述〔1〕使用回溯法解決八皇后問(wèn)題。8皇后問(wèn)題:在8*8格的棋盤上放置彼此不受攻擊的8個(gè)皇后。按照國(guó)際象棋的規(guī)那么,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。8后問(wèn)題等價(jià)于在8*8格的棋盤上放置8個(gè)皇后,任何2個(gè)皇后不放在同一行或同一列或同一斜線上?!?〕用高級(jí)程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)四、求解思路ProcedurePLACE(k) //如果一個(gè)皇后能放在第k行和X(k)列,那么返回true,否那么返回false。X是一個(gè)全程數(shù)組,進(jìn)入此過(guò)程時(shí)已置入了k個(gè)值。ABS(r)過(guò)程返回r的絕對(duì)值// globalX(1:k);integeri,k; i1 whilei<kdo ifX(i)=X(k)orABS(X(i)-X(k))=ABS(i-k)then return(false) endif ii+1 repeat return(true)EndPLACEProcedureNQUEENS(n) //此過(guò)程使用回溯法求出一個(gè)n*n棋盤上放置n個(gè)皇后,使其不能互相攻擊的所有可能位置// integerk,n,X(1:n) X(1)0;k1//k是當(dāng)前行;X(k)是當(dāng)前列// whilek>0do//對(duì)所有的行,執(zhí)行以下語(yǔ)句// X(k)X(k)+1//移到下一列// whileX(k)<=nandNotPLACE(k)do//此處能放這個(gè)皇后嗎// X(k)X(k)+1//不能放那么轉(zhuǎn)到下一列// repeat ifX(k)<=nthen//找到一個(gè)位置// ifk=nthenprint(X)//是一個(gè)完整的解那么打印這個(gè)數(shù)組// elsekk+1;X(k)0//否那么轉(zhuǎn)到下一行// endif elsekk-1//回溯// endif repeatEndNQUEENS五、算法實(shí)現(xiàn)本實(shí)驗(yàn)程序是使用C#編寫,算法實(shí)現(xiàn)如下:1.queen類—實(shí)現(xiàn)8皇后問(wèn)題的計(jì)算,將結(jié)果存入數(shù)組。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Collections;namespace_8Queen{publicclassQueen{publicstaticArrayListarr=newArrayList();//存放查詢結(jié)果privatestaticbool[]columflag=newbool[8]{true,true,true,true,true,true,true,true};//列占用標(biāo)記true為可用privatestaticbool[]leftflag=newbool[15]{true,true,true,true,true,true,true,true,true,true,true,true,true,true,true};//左行對(duì)角線占用標(biāo)記privatestaticbool[]rightflag=newbool[15]{true,true,true,true,true,true,true,true,true,true,true,true,true,true,true};//右行對(duì)角線占用標(biāo)記privatestaticint[,]position=newint[,]{{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}};//皇后位置坐標(biāo)publicstaticintsum=0;publicstaticvoidTryStep(inti)//i取值1至8{for(intj=1;j<=8;j++){if(columflag[j-1]&&leftflag[i+j-2]&&rightflag[i-j+7])//如果當(dāng)前位置可以放置{columflag[j-1]=false;leftflag[i+j-2]=false;rightflag[i-j+7]=false;//占用position[i-1,j-1]=1;//參加皇后位置if(i<8)TryStep(i+1);//進(jìn)入下一行else{int[,]position1=newint[8,8];//皇后位置坐標(biāo)àfor(intm=0;m<8;m++)//打印解法{for(intn=0;n<8;n++)position1[m,n]=position[m,n];}arr.Add(position1);intt=arr.Count;sum++;//解法數(shù)統(tǒng)計(jì)}columflag[j-1]=true;//如果不能放置時(shí),取消占座及移走皇后leftflag[i+j-2]=true;rightflag[i-j+7]=true;position[i-1,j-1]=0;}}}}}2.圖形界面Form1usingSystem;usingSystem.Collections.Generic;usingSystemponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespace_8Queen{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();run();}privatePictureBox[,]card;privateintrows;//行數(shù)privateintcols;//列數(shù)privateintsize=8;publicintindex=0;publicintsum;privatevoidrun()//初始化動(dòng)態(tài)加載8*8的PictureBox控件,作為棋盤{rows=size;cols=size;this.card=newPictureBox[rows,cols];this.panel1.Controls.Clear();for(inti=0;i<rows;i++){for(intj=0;j<cols;j++){this.card[i,j]=newPictureBox();this.card[i,j].Location=newSystem.Drawing.Point(70*j,70*i);this.card[i,j].Name=i.ToString()+j.ToString();this.card[i,j].Size=newSystem.Drawing.Size(70,70);this.panel1.Controls.Add(card[i,j]);}}Queen.TryStep(1);sum=Queen.arr.Count;for(intf=1;f<=sum;f++){thisboBox1.Items.Add(f);}comboBox1.SelectedIndex=0;label3.Text=sum.ToString();setPictureBox();}publicvoidsetPictureBox()//布局,放置皇后{int[,]p=(int[,])Queen.arr[index];for(inti=0;i<rows;i++){for(intj=0;j<cols;j++){if(((i%2)!=(j%2))){if(p[i,j]==0)this.card[i,j].Image=Image.FromFile("..\\..\\picture\\背景\\3.jpg");elsethis.card[i,j].Image=Image.FromFile("..\\..\\picture\\背景\\1.jpg");}else{if(p[i,j]==0)this.card[i,j].Image=Image.FromFile("..\\..\\picture\\背景\\4.jpg");elsethis.card[i,j].Image=Image.FromFile("..\\..\\picture\\背景\\2.jpg");}}}}privatevoidnext_Click(objectsender,EventArgse)//點(diǎn)擊“下一個(gè)〞按鈕{index++;if(index+1>sum){index=0;MessageBox.Show("結(jié)束!共"+sum+"種方案?");}setPictureBox();comboBox1.Text=(index+1).ToString();comboBox1.SelectedIndex=index;}privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse)//選擇某一個(gè)方案{index=comboBox1.SelectedIn
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)試題(大學(xué)選修課)-無(wú)處不在-傳染病歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年大學(xué)試題(歷史學(xué))-蒙古族史歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年大學(xué)試題(醫(yī)學(xué))-物理診斷學(xué)歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年大學(xué)試題(醫(yī)學(xué))-中醫(yī)內(nèi)科學(xué)歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年國(guó)家開(kāi)放大學(xué)(電大)-現(xiàn)代文員(???歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年衛(wèi)生資格(中初級(jí))-神經(jīng)外科主治醫(yī)師歷年參考題庫(kù)含答案解析(5套典型題)
- 2025年衛(wèi)生知識(shí)健康教育知識(shí)競(jìng)賽-瘧疾知識(shí)競(jìng)賽歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年醫(yī)學(xué)高級(jí)職稱-骨外科(醫(yī)學(xué)高級(jí))歷年參考題庫(kù)含答案解析(5套典型題)
- 2025年企業(yè)文化企業(yè)建設(shè)知識(shí)競(jìng)賽-西南公司制度知識(shí)歷年參考題庫(kù)含答案解析(5套典型考題)
- 2025年專業(yè)技術(shù)人員繼續(xù)教育公需科目-知識(shí)創(chuàng)造與經(jīng)營(yíng)繼續(xù)教育歷年參考題庫(kù)含答案解析(5套典型考題)
- 2024年碭山中小學(xué)教師招聘真題
- 《 大學(xué)生軍事理論教程》全套教學(xué)課件
- 2024項(xiàng)目投資協(xié)議書
- CJT 526-2018 軟土固化劑 標(biāo)準(zhǔn)
- JT-T-747.1-2020交通運(yùn)輸信息資源目錄體系第1部分:總體框架
- DZ∕T 0173-2022 大地電磁測(cè)深法技術(shù)規(guī)程
- 中國(guó)絕經(jīng)管理與絕經(jīng)激素治療指南(2023版)解讀
- 生物藥制造工藝經(jīng)濟(jì)與成本分析
- 《電站鍋爐壓力容器檢驗(yàn)規(guī)程》
- 國(guó)標(biāo)《電化學(xué)儲(chǔ)能系統(tǒng)儲(chǔ)能變流器技術(shù)要求》
- 2024年黑龍江檢察機(jī)關(guān)法院書記員招聘筆試參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論