




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
人工智能課程設(shè)計(jì)報(bào)告
人工智能課程設(shè)計(jì)報(bào)告目錄一、概述、設(shè)計(jì)題目………………、系統(tǒng)主要內(nèi)容與功能…………………二、設(shè)計(jì)流程及描述、設(shè)計(jì)流程圖……………、設(shè)計(jì)思路簡介…………三、運(yùn)行界面簡介、游戲模式界面演示……………………、解答界面演示…………四、源程序代碼、游戲模式代碼…………、解答代碼………………五、課程設(shè)計(jì)體會(huì)設(shè)計(jì)體會(huì)…………………附錄參考文獻(xiàn)……………(一)概述設(shè)計(jì)題目:問題是一個(gè)古老而著名的問題,是回溯算法的典型例題。該問題是十九世紀(jì)著名的數(shù)學(xué)家高斯1850年提出:在8X8格的國際象棋上擺放八個(gè)皇后,使其不能
互相攻擊,即任意兩個(gè)皇后都不能處于同一行、同一列或同一斜線上,問有多少種擺法。高斯認(rèn)為有76種方案。1854年在柏林的象棋雜志上不同的作者發(fā)表了40種不同的解,后來有人用圖論的方法解出92種結(jié)果。系統(tǒng)主要內(nèi)容與功能設(shè)計(jì)內(nèi)容:在8*8的國際象棋棋盤上,放置8個(gè)皇后后,使8個(gè)棋子不能被相互對(duì)方吃掉。設(shè)計(jì)要求:(1)較好的人機(jī)操作界面,登陸界面應(yīng)有系統(tǒng)的各種功能信息。(2)能夠進(jìn)行基本的游戲操作,用不同的顏色在棋盤上表示能占用的格子和不能占用的。(3)當(dāng)程序出錯(cuò)后應(yīng)能可以重新開始進(jìn)行游戲(4)此系統(tǒng)應(yīng)包括答案解答功能,其中答案解答功能應(yīng)包括各種答案的游戲界面有共92種情況。(二)設(shè)計(jì)流程及描述設(shè)計(jì)流程圖:算法基本流程圖主函數(shù):開始調(diào)用函數(shù)choose()iLine=0NiLine<8YiLine=0iLine++a[iLine]=0iColumn=0iLine<15YNiColumn<8b[iLine]=0YQueen[iLine][iColumiLine++
進(jìn)入輸入judgeswitch(judge)case’4’case’casedefaulcase’‘3’t輸入numgetchargetchar調(diào)用函數(shù)exichoosenum<0||mum>92-YN調(diào)用函數(shù)choose()退出結(jié)束2.2設(shè)計(jì)思路簡介:由于這是一個(gè)平面上的棋子布局處理問題,因此我們可以將問題堪稱一個(gè)2維數(shù)組問題,不妨設(shè)這個(gè)8*8數(shù)組A,并假定第一行是為后一位置的位置,第二行為后衛(wèi)放置的位置,依次類推,8行分別存放8個(gè)后的位置,為了簡便處理,我們先將A(8,8)
的初值設(shè)為1,一旦一個(gè)位置存放一個(gè)后,則其他后不能處于同一行,同一列,同一個(gè)斜線,將這些位置的數(shù)組元素的值設(shè)為0。1.1在其中一個(gè)位置上有一后的數(shù)據(jù)處理設(shè)第m行,n列有一個(gè)后,則根據(jù)原則,分別從八個(gè)不同的方向?qū)?duì)應(yīng)的元素置為0。第K個(gè)后的位置設(shè)定假定前面:k-1個(gè)后的位置已經(jīng)確定,則第:K個(gè)后只能放置在第K行中元素不為0的位置上。因此只需找到這個(gè)不為0的元素A(K,J),J就是第K個(gè)后的位置。最后一個(gè)后的位置確定如果第8行中有元素不為0,則表明你已經(jīng)找到了一種擺法,可以通過文本框text1輸將文本框的ScrollBar的屬性設(shè)為2-Vertivcal,Multiline屬性設(shè)為true。但是輸出后還要尋找是否有其它的擺法?如果第8行中元素均為0,則表明你的這種擺法不行,還得要嘗試其它的方法,看看是否能行?但是,如何嘗試其它的擺法呢?這就是問題的關(guān)鍵所在,需要我們回溯到以前的狀態(tài),重新擺放!回溯處理回溯到以前的狀態(tài)可以用下面的算法來實(shí)現(xiàn):(1)尋找到第:個(gè)后的位置。(2)將當(dāng)前數(shù)組6的值全部保存到另外一個(gè)數(shù)組中,以便回溯時(shí)用到。(3)進(jìn)行%7%的數(shù)據(jù)處理。(4)尋找下一個(gè)后的位置。(5)不管是否找到正確擺放方法,都應(yīng)當(dāng)去嘗試其它方法。因此,必須再將B中的數(shù)據(jù)還原到數(shù)組A中進(jìn)行回溯處理。至此,八皇后問題的算法已基本解決,用戶可以從第一個(gè)后開始得到的92種不同的算法。2、算法改進(jìn),通過多重循環(huán)逐個(gè)處理,完成設(shè)計(jì),最終由于通過多重循環(huán)進(jìn)行處理,8個(gè)后就需要8重循環(huán)處理,使得程序就顯得很長,效率不是很高,能否通過改進(jìn)程序來提高效率?值得我們?nèi)ヌ接?。?duì)數(shù)據(jù)處理的改進(jìn)根據(jù)問題的實(shí)際情況,由于后是按順序進(jìn)行處理的,因此當(dāng)你處理到第K個(gè)后時(shí),前面K-1個(gè)的位置已經(jīng)確立,也就是說前面K-1行數(shù)據(jù)已經(jīng)處理完畢,所以沒有必要在中對(duì)向左上,向上,向右上三個(gè)方向的數(shù)據(jù)進(jìn)行處理,只需要處理中其它5個(gè)方向即可。保存數(shù)據(jù)的改進(jìn)將數(shù)組A的當(dāng)前狀態(tài)存放到B數(shù)組中去,以便將來回溯時(shí)使用。由于回溯并不是回到初始狀態(tài),因此沒有必要將整個(gè)數(shù)組全部保存,只需部分保存即可。例如,你在處理第K個(gè)后時(shí),只要將第K行到第8行數(shù)組A中的數(shù)據(jù)保存?;厮輹r(shí),只要將第K行之后的元素還原即可。多重循環(huán)的改進(jìn)8個(gè)后,使用8重循環(huán),而且處理的方法類同,使得我們的程序冗長,用戶可以使用遞歸算法來縮短程序的長度。算法如下:
(7)如果找到擺法,在文本框中輸出。(8)K=K-1游戲運(yùn)行界面:很明顯此游戲完成失??!成功的完成游戲?。?/p>
此為其計(jì)算的結(jié)果,共有92中選擇自己希望的答案組數(shù)以上為對(duì)應(yīng)的顯示的答案,從中可以看出游戲成功!四、源程序代碼、游戲模式代碼OptionExplicitDimSd(63)AsInteger
DimCntAsIntegerPrivateSubForm_Load()八皇后游戲=5000=5500DimmAsInteger,nAsIntegerWithPicture1(0).Left=500.Top=500.Width=500.Height=500.BackColor=vbWhiteEndWith'初始化,載入8*8個(gè)格Form=0To7Forn=0To7Ifm=0Andn=0Thenn=1LoadPicture1(m*8+n)WithPicture1(m*8+n).Left=(n+1)*500.Top=(m+1)*500.Width=500.Height=500.BackColor=vbWhite.Visible=TrueEndWithNextNextEndSubPrivateSubhp_Click()請(qǐng)?jiān)谙旅?*8共64個(gè)方格中填入8個(gè)綠色方格求這8個(gè)綠色方格兩兩之間不能共行或共列,也不能共斜線要編寫游戲幫助EndSubPrivateSubPicture1_Click(IndexAsInteger)IfPicture1(Index).BackColor=vbWhiteThen'未用Picture1(Index).BackColor=vbGreen'該格標(biāo)綠,說明已選中Cnt=Cnt+1已放入個(gè)皇后IfCnt=8Then恭喜您成功完成?。?qiáng)人?。?qiáng)烈恭喜!CallReSt_ClickExitSubEndIfElseIfPicture1(Index).BackColor=vbGreenThen'已選用,撤銷
Picture1(Index).BackColor=vbWhite'該格標(biāo)白,說明未用Cnt=Cnt-1已放入個(gè)皇后ElseExitSubEndIfDimmAsInteger,nAsInteger,pAsInteger,qAsInteger獲得當(dāng)前行n=IndexMod8'獲得當(dāng)前列DimfcAsColorConstantsDimtmpaddAsIntegerIfPicture1(Index).BackColor=vbWhiteThenfc=vbWhitetmpadd=-1EndIfIfPicture1(Index).BackColor=vbGreenThenfc=vbRedtmpadd=1EndIf'同行變色p=m-1DoWhilep>=0WithPicture1(p*8+n).BackColor=fcSd(p*8+n)=Sd(p*8+n)+tmpaddIfSd(p*8+n)>0Then.BackColor=vbRedElseIfSd(p*8+n)<0ThenSd(p*8+n)=0EndIfEndWithp=p-1Loopp=m+1DoWhilep<=7WithPicture1(p*8+n).BackColor=fcSd(p*8+n)=Sd(p*8+n)+tmpaddIfSd(p*8+n)>0Then.BackColor=vbRedElseIfSd(p*8+n)<0ThenSd(p*8+n)=0EndIfEndWithp=p+1Loop
'同列變色q=n-1DoWhileq>=0WithPicture1(m*8+q).BackColor=fcSd(m*8+q)=Sd(m*8+q)+tmpaddIfSd(m*8+q)>0Then.BackColor=vbRedElseIfSd(m*8+q)<0ThenSd(m*8+q)=0EndIfEndWithq=q-1Loopq=n+1DoWhileq<=7WithPicture1(m*8+q).BackColor=fcSd(m*8+q)=Sd(m*8+q)+tmpaddIfSd(m*8+q)>0Then.BackColor=vbRedElseIfSd(m*8+q)<0ThenSd(m*8+q)=0EndIfEndWithq=q+1Loop'左斜變色p=m-1:q=n+1DoWhilep>=0Andq<=7WithPicture1(p*8+q).BackColor=fcSd(p*8+q)=Sd(p*8+q)+tmpaddIfSd(p*8+q)>0Then.BackColor=vbRedElseIfSd(p*8+q)<0ThenSd(p*8+q)=0EndIfEndWithp=p-1:q=q+1Loopp=m+1:q=n-1DoWhilep<=7Andq>=0WithPicture1(p*8+q).BackColor=fcSd(p*8+q)=Sd(p*8+q)+tmpadd
IfSd(p*8+q)>0Then.BackColor=vbRedElseIfSd(p*8+q)<0ThenSd(p*8+q)=0EndIfEndWithp=p+1:q=q-1Loop'左斜變色p=m-1:q=n-1DoWhilep>=0Andq>=0WithPicture1(p*8+q).BackColor=fcSd(p*8+q)=Sd(p*8+q)+tmpaddIfSd(p*8+q)>0Then.BackColor=vbRedElseIfSd(p*8+q)<0ThenSd(p*8+q)=0EndIfEndWithp=p-1:q=q-1Loopp=m+1:q=n+1DoWhilep<=7Andq<=7WithPicture1(p*8+q).BackColor=fcSd(p*8+q)=Sd(p*8+q)+tmpaddIfSd(p*8+q)>0Then.BackColor=vbRedElseIfSd(p*8+q)<0ThenSd(p*8+q)=0EndIfEndWithp=p+1:q=q+1LoopEndSubPrivateSubReSt_Click()DimmAsIntegerForm=0To63Picture1(m).BackColor=vbWhiteSd(m)=0NextCnt=0已放入個(gè)皇后EndSub、解答代碼
OptionExplicitDimCountAAsIntegerDimAnsw()AsIntegerPrivateSubForm_Load()八皇后求解=5000=5500DimmAsInteger,nAsIntegerWithPicture1(0).Left=500.Top=500.Width=500.Height=500.BackColor=vbWhiteEndWith'初始化,載入8*8個(gè)格Form=0To7Forn=0To7Ifm=0Andn=0Thenn=1LoadPicture1(m*8+n)WithPicture1(m*8+n).Left=(n+1)*500.Top=(m+1)*500.Width=500.Height=500.BackColor=vbWhite.Visible=TrueEndWithNextNextEndSubPrivateSubForm_Unload(CancelAsInteger)Close答案數(shù)據(jù)EndSubPrivateSubPicture1_Click(IndexAsInteger)EndSubPrivateSubStart_Click()'以第0行起始,起始時(shí)皇后數(shù)Cnt為0DimCurRowAsIntegerDimCntAsIntegerDimkAsInteger,mAsInteger,nAsIntegerDimStas(7,7)AsBoolean'表示該位是否可用CurRow=0Cnt=0'初始化各格狀態(tài),均為可用
Form=0To7Forn=0To7Stas(m,n)=TrueNextNextCallEp(Stas,CurRow,Cnt)ReDimAnsw(1,7,CountA-1)'讀入答案數(shù)據(jù)答案數(shù)據(jù)Fork=0ToCountA-1Form=0To7Forn=0To1Input#1,Answ(n,m,k)Next共有NextNext組答案解題完成EndSubPrivateSubEp(ByRefSts()AsBoolean,ByValSubRowAsInteger,ByValSubCntAsInteger)DimmAsInteger,nAsInteger,kAsIntegerDimSubSts(7,7)AsBooleanFork=0To7IfSts(SubRow,k)ThenIfSubCnt+1=8ThenCallOts(Sts)'已填完八個(gè)皇后,輸出CountA=CountA+1ExitSubEndIfIfSubRow+1=8ThenExitSubEndIf'復(fù)制狀態(tài)數(shù)組Form=0To7Forn=0To7SubSts(m,n)=Sts(m,n)NextNextCallChgSt(SubSts,SubRow,k)'放入皇后,依皇后位置調(diào)整狀態(tài)數(shù)組CallEp(SubSts,SubRow+1,SubCnt+1)EndIfNextEndSubPrivateSubChgSt(ByRefSbsts()AsBoolean,ByValRowAsInteger,ByValColAsInteger)'由皇后位置(Row,Col),改變狀態(tài)
DimmAsInteger,nAsInteger'行變m=RowDoWhilem-1>=0m=m-1Sbsts(m,Col)=FalseLoopm=RowDoWhilem+1<=7m=m+1Sbsts(m,Col)=FalseLoop'列變n=ColDoWhilen-1>=0n=n-1Sbsts(Row,n)=FalseLoopn=ColDoWhilen+1<=7n=n+1Sbsts(Row,n)=FalseLoop'左上右下斜m=Row:n=ColDoWhilem-1>=0Andn-1>=0m=m-1:n=n-1Sbsts(m,n)=FalseLoopm=Row:n=ColDoWhilem+1<=7Andn+1<=7m=m+1:n=n+1Sbsts(m,n)=FalseLoop'左下右上斜m=Row:n=ColDoWhilem-1>=0Andn+1<=7m=m-1:n=n+1Sbsts(m,n)=FalseLoopm=Row:n=ColDoWhilem+1<=7Andn-1>=0m=m+1:n=n-1Sbsts(m,n)=FalseLoopEndSub
PrivateSubOts(ByRefGetSts()AsBoolean)DimmAsInteger,nAsInteger答案數(shù)據(jù)Form=0To7Forn=0To7IfGetSts(m,n)ThenWrite#1,m,nEndIfNextNextClose#1EndSubPrivateSubSw_Click()DimkAsInteger,mAsInteger,nAsInteger顯示第幾組答案選擇答案號(hào)Ifk<1Ork>92OrInt(k)<>kThen組號(hào)不對(duì)ExitSubEndIfForm=0To7Forn=0To7Picture1(m*8+n).BackColor=vbRedNextNextForn=0To7Picture1(Answ(0,n,k-1)*8+Answ(1,n,k-1)).BackColor=vbGreenNextEndSub五、課程設(shè)計(jì)體會(huì)第一次接觸這個(gè)題目覺得很容易,可是當(dāng)自己真正去做的時(shí)候才知道有很多東西都有很大的問題,剛開始準(zhǔn)備用C語言寫的,后來選擇了VB,于是就花了2周時(shí)間去看了下VB的基本的編程方法,發(fā)現(xiàn)很容易上手,就慢慢的開始進(jìn)行了設(shè)計(jì)。但是可能是急于求成,在設(shè)計(jì)中程序一直無法運(yùn)行,后來才
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 30105-2:2024 EN Information technology - IT Enabled Services-Business Process Outsourcing (ITES-BPO) lifecycle processes - Part 2: Process assessment model (PAM)
- 【正版授權(quán)】 ISO 13315-2:2025 EN Environmental management for concrete and concrete structures - Part 2: System boundary and inventory data
- 2025年度公共設(shè)施裝修工期延誤賠償及質(zhì)量保證協(xié)議
- 2025年度電子商務(wù)交易安全保障合同
- 2025高考作文預(yù)測(cè):正確“出圈”才能出彩
- 個(gè)人職業(yè)能力提升計(jì)劃
- 未來年的市場(chǎng)拓展計(jì)劃
- 提升職業(yè)道德與素養(yǎng)的工作計(jì)劃
- 班級(jí)網(wǎng)絡(luò)學(xué)習(xí)平臺(tái)的搭建與維護(hù)計(jì)劃
- 2025年休閑專用車及其零附件項(xiàng)目建議書
- 中國歷史地理概況智慧樹知到期末考試答案章節(jié)答案2024年復(fù)旦大學(xué)
- 國際貨物運(yùn)輸委托代理合同(中英文對(duì)照)全套
- 關(guān)于辦理物業(yè)管理交接事宜告知函
- 全面新編部編版四年級(jí)下冊(cè)語文教材解讀分析
- 《電解富氫水機(jī)》課件
- 《建筑工程質(zhì)量檢驗(yàn)評(píng)定標(biāo)準(zhǔn)》
- 江蘇農(nóng)牧科技職業(yè)學(xué)院單招《職業(yè)技能測(cè)試》參考試題庫(含答案)
- VDA6.3 2023過程審核教材
- 2024年青海省旅游行業(yè)分析報(bào)告及未來發(fā)展趨勢(shì)
- 高職應(yīng)用語文教程(第二版)教案 3管晏列傳
- 高中物理《光電效應(yīng)》
評(píng)論
0/150
提交評(píng)論