數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-八皇后的問題求解

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-八皇后的問題求解

ID:6789172

大?。?8.50 KB

頁數(shù):12頁

時(shí)間:2018-01-25

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-八皇后的問題求解_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-八皇后的問題求解_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-八皇后的問題求解_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-八皇后的問題求解_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-八皇后的問題求解_第5頁
資源描述:

《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-八皇后的問題求解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)題目八皇后的問題求解學(xué)生姓名指導(dǎo)教師學(xué)院信息學(xué)院專業(yè)班級(jí)信科一班完成時(shí)間2014年1月2日第一章課程設(shè)計(jì)目的本學(xué)期我們對(duì)《數(shù)據(jù)結(jié)構(gòu)》這門課程進(jìn)行了學(xué)習(xí)。這門課程是一門實(shí)踐性非常強(qiáng)的課程,為了讓大家更好地理解與運(yùn)用所學(xué)知識(shí),提高動(dòng)手能力,我們進(jìn)行了此次課程設(shè)計(jì)實(shí)習(xí)。這次課程設(shè)計(jì)不但要求實(shí)習(xí)者掌握《數(shù)據(jù)結(jié)構(gòu)》中的各方面知識(shí),還要求實(shí)習(xí)者具備一定的語言基礎(chǔ)和編程能力。具體說來,這次課程設(shè)計(jì)主要有兩大方面目的。一是讓實(shí)習(xí)著通過學(xué)習(xí)掌握《數(shù)據(jù)結(jié)構(gòu)》中的知識(shí)。對(duì)于遞歸算法這一課題來說,所要求掌

2、握的數(shù)據(jù)結(jié)構(gòu)知識(shí)主要有:if語句的選擇結(jié)構(gòu),for語句的循環(huán)結(jié)構(gòu),函數(shù)的調(diào)用來實(shí)現(xiàn)。二是二是通過實(shí)習(xí)鞏固并提高實(shí)習(xí)者的C語言知識(shí),并初步了解VisualC++的知識(shí),提高其編程能力與專業(yè)水平。第二章課程設(shè)計(jì)內(nèi)容和要求2.1課程設(shè)計(jì)內(nèi)容組成員名稱和分工在一個(gè)8×8的棋盤里放置8個(gè)皇后,要求每個(gè)皇后兩兩之間不相"沖"(在每一橫列豎列斜列只有一個(gè)皇后)并要求用遞歸算法實(shí)現(xiàn),輸出所有棋盤狀態(tài),其中空的地方為“*”,放置皇后的地方為“@”2.1.1八皇后的建立與輸出對(duì)給定的8×8的棋盤里的八個(gè)皇后進(jìn)行討論,根據(jù)

3、遞歸法,循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)進(jìn)行建立并輸出之。2.2運(yùn)行環(huán)境該程序的運(yùn)行環(huán)境為Windows7系統(tǒng),MicrosoftVisualC++6.0版本。第三章課程設(shè)計(jì)分析3.1數(shù)據(jù)類型規(guī)定了函數(shù)返回值類型。黨執(zhí)行函數(shù)體中的語句后,通常會(huì)產(chǎn)生一個(gè)結(jié)果,這就是函數(shù)的返回值,它可以是任何有效的類型。若函數(shù)執(zhí)行后不返回值,數(shù)據(jù)類型習(xí)慣用void來表示。如果在函數(shù)定義時(shí)沒有數(shù)據(jù)類型出現(xiàn),則默認(rèn)為函數(shù)返回值為整型值(int)。3.2函數(shù)調(diào)用調(diào)用一個(gè)函數(shù)之前必須對(duì)該函數(shù)進(jìn)行說明。函數(shù)調(diào)用由函數(shù)名和函數(shù)調(diào)用運(yùn)算符()組成,

4、()內(nèi)有0個(gè)或多個(gè)逗號(hào)分隔的參數(shù)(稱為實(shí)參)。每一個(gè)參數(shù)是一個(gè)表達(dá)式,且參數(shù)的個(gè)數(shù)與參數(shù)的類型要與被調(diào)函數(shù)定義的參數(shù)(稱為形參)個(gè)數(shù)和類型匹配。當(dāng)被調(diào)函數(shù)執(zhí)行時(shí),首先計(jì)算實(shí)參表達(dá)式,并將結(jié)果值傳送給行參,然后執(zhí)行函數(shù)體,返回的返回值被傳送到調(diào)用函數(shù)。如果函數(shù)調(diào)用后有返回值,調(diào)用表達(dá)是可以用在表達(dá)式中,而無參函數(shù)的調(diào)用是一個(gè)單獨(dú)的語句。3.3選擇結(jié)構(gòu)if語句的基本形式可分為兩種:(1)if(表達(dá)式)語句其執(zhí)行過程是,首先計(jì)算表達(dá)式的值,若不為0,條件判斷為真,則執(zhí)行()后面的語句,否則,if語句中止執(zhí)行

5、,即不執(zhí)行()后面的語句。(2)if(表達(dá)式)語句1else語句2其執(zhí)行過程是,首先計(jì)算表達(dá)式的值,若不為0,條件判斷為真,則執(zhí)行()后面的語句,否則執(zhí)行語句2。3.4循環(huán)結(jié)構(gòu)for語句的一般形式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){語句;//循環(huán)體}其執(zhí)行的過程有以下幾個(gè)步驟:求解表達(dá)式1;求解表達(dá)式2,若其值為真,則執(zhí)行for語句中指定的循環(huán)體語句,然后執(zhí)行下面的第3)步。若為假,則結(jié)束循環(huán);求解表達(dá)式3;轉(zhuǎn)回上面第2)步繼續(xù)執(zhí)行;循環(huán)結(jié)束,執(zhí)行for語句后面的其他語句。第四章算法(數(shù)據(jù)結(jié)構(gòu))

6、描述4.1.1八皇后的存儲(chǔ)結(jié)構(gòu)定義其列數(shù),行數(shù),主對(duì)角線,從對(duì)角線,算法的種類數(shù),staticcharQueen[8][8];staticinta[8];//列數(shù)staticintb[15];//代表主對(duì)角線staticintc[15];代表從對(duì)角線staticintiQueenNum=0;//記錄總的棋盤狀態(tài)數(shù)voidqu(inti);//參數(shù)i代表行4.1.2初始化棋盤在確定其中八皇后棋盤中的位置時(shí),應(yīng)該初始化一個(gè)棋盤,然后再輸入數(shù)據(jù)intmain(){intiLine,iColumn;//棋盤初

7、始化,空格為*,放置皇后的地方為@for(iLine=0;iLine<8;iLine++){a[iLine]=0;//列標(biāo)記初始化,表示無列沖突for(iColumn=0;iColumn<8;iColumn++)Queen[iLine][iColumn]='*';}//主、從對(duì)角線標(biāo)記初始化,表示沒有沖突for(iLine=0;iLine<15;iLine++)b[iLine]=c[iLine]=0;qu(0);return0;}4.1.3建立并輸出棋盤數(shù)組a、b、c分別用來標(biāo)記沖突,a數(shù)組代表列沖突

8、,從a[0]~a[7]代表第0列到第7列,如果某列上已經(jīng)有皇后,則為1,否則為0;數(shù)組b代表主對(duì)角線沖突,為b[i-j+7],即從b[0]~b[14],如果某條主對(duì)角線上已經(jīng)有皇后,則為1,否則為0;數(shù)組c代表從對(duì)角線沖突,為c[i+j],即從c[0]~c[14],如果某條從對(duì)角線上已經(jīng)有皇后,則為1,否則為0;voidqu(inti){intiColumn;for(iColumn=0;iColumn<8;iColumn++){if(a[iColumn]

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。