九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 馬踏棋盤

上傳人:guoc****ang 文檔編號(hào):113289352 上傳時(shí)間:2022-06-24 格式:DOC 頁(yè)數(shù):26 大小:274.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 馬踏棋盤_第1頁(yè)
第1頁(yè) / 共26頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 馬踏棋盤_第2頁(yè)
第2頁(yè) / 共26頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 馬踏棋盤_第3頁(yè)
第3頁(yè) / 共26頁(yè)

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 馬踏棋盤》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 馬踏棋盤(26頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、前言學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的最終目的是解決實(shí)際的應(yīng)用問(wèn)題,特別是非數(shù)值計(jì)算類型的應(yīng)用問(wèn)題,數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)就是為此目的一次實(shí)際訓(xùn)練。要求我們?cè)趯?duì)題目進(jìn)行獨(dú)立分析的基礎(chǔ)上,完成設(shè)計(jì)和開(kāi)發(fā),并最終接受嚴(yán)格的測(cè)試考核。以深化對(duì)數(shù)據(jù)結(jié)構(gòu)課程中基本概念、理論和方法的理解,提升綜合運(yùn)用所學(xué)知識(shí)處理實(shí)際問(wèn)題的能力,使我們的的程序設(shè)計(jì)能力與調(diào)試水平有一個(gè)明顯的提升。課程設(shè)計(jì)所安排的題目,都有一定的難度和深度,從抽象數(shù)據(jù)類型的提煉、數(shù)據(jù)結(jié)構(gòu)選擇到算法的設(shè)計(jì),均由我們每個(gè)人自主完成。在一周的時(shí)間內(nèi),歷經(jīng)查找參考資料、使用技術(shù)手冊(cè)、設(shè)計(jì)編碼和撰寫文檔的實(shí)踐,進(jìn)一步升華對(duì)軟件工程師和程序員人格素質(zhì)的認(rèn)識(shí)和理解。 本課程設(shè)計(jì)的主

2、要設(shè)計(jì)內(nèi)容是: 設(shè)計(jì)一個(gè)馬踏棋盤問(wèn)題的演示程序。即將馬隨機(jī)地放在國(guó)際象棋的8*8棋盤的某個(gè)方格中,然后令馬按走棋規(guī)則開(kāi)始進(jìn)行移動(dòng)。要求馬將棋盤上的每個(gè)方格進(jìn)入且只進(jìn)入一次,走遍全部64個(gè)方格。要求編制非遞歸程序,求出馬的行走路線,將數(shù)字1,2,64依次填入一個(gè)8*8的方陣在屏幕上顯示輸出。針對(duì)該問(wèn)題本課程設(shè)計(jì)采用的是面向?qū)ο蟮拈_(kāi)發(fā)語(yǔ)言Java,在Windows7, myeclipse8.5.0的平臺(tái)上開(kāi)發(fā)出來(lái),并有圖形界面。最終較好的實(shí)現(xiàn)了全部要求,達(dá)到了預(yù)期效果。從中我也學(xué)到了很多,不僅僅是課堂外的新知識(shí),還有那種會(huì)查資料,會(huì)學(xué)習(xí)新知識(shí)的能力。這個(gè)課程設(shè)計(jì)的順利完成,離不開(kāi)胡老師的指導(dǎo)和幫助

3、,在他的細(xì)心指導(dǎo)和幫助下,我對(duì)馬踏棋盤程序開(kāi)發(fā)的整個(gè)流程有了深刻地了解和系統(tǒng)地掌握,在這里學(xué)生表示真誠(chéng)地感謝。另外也謝謝這次課程設(shè)計(jì)提供給我?guī)椭耐瑢W(xué)們。此外,本課程設(shè)計(jì)還參考了一些文獻(xiàn)資料,在此向這些文獻(xiàn)資料的作者深表謝意。本課程設(shè)計(jì)可作為數(shù)據(jù)結(jié)構(gòu)和Java課程教學(xué)的參考案例。由于時(shí)間倉(cāng)促和本人水平所限,設(shè)計(jì)中難免有不當(dāng)和欠妥之處,敬請(qǐng)老師不吝批評(píng)指正。 筆者 2016.6目錄摘要3第一章 需求分析.4第二章 概要設(shè)計(jì).52.1系統(tǒng)描述。.52.2運(yùn)行環(huán)境.52.3馬踏棋盤流程52.4算法設(shè)計(jì)第三章 詳細(xì)設(shè)計(jì)3.1 Jisuan類實(shí)現(xiàn)3.23.33.4Disizhang 4.14,24.3D

4、iwu 5.15.2Cankaowenxian Fulu 摘要本課程設(shè)計(jì)中的程序?qū)崿F(xiàn)了馬踏棋盤問(wèn)題的求解,并能夠演示起始位置在棋盤上任何位置的問(wèn)題的實(shí)現(xiàn).程序采用圖形演示,使算法的描述更形象,更生動(dòng),使教學(xué)更能產(chǎn)生良好的效果。對(duì)于該程序,我嚴(yán)格按照面向?qū)ο蟮乃枷脒M(jìn)行開(kāi)發(fā),其中有Jisuan類, Shuchu類, Jframe類和Main四個(gè)類。其中Jisuan類主要是初始化各點(diǎn)的可走路徑,并且刪除不合法的點(diǎn);Shuchu類主要最優(yōu)算法的實(shí)現(xiàn);Jframe類為圖形用戶界面的設(shè)計(jì),主要完成棋盤的繪制和結(jié)果的打?。籑ain類主要是負(fù)責(zé)整個(gè)程序的控制。最終調(diào)試運(yùn)行通過(guò),實(shí)現(xiàn)了全部要求,取得了理想效果。

5、關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu) 馬踏棋盤 Java 圖形界面Abstract This course design of the program realization horses on board the solution, and to demonstrate the starting position on the board of the realization of the problem any position. The program using graphical presentation, the method of more image, the more vivid descrip

6、tion, and make the teaching more can produce good effect. For the program, I in strict accordance with the object-oriented ideas of development, including Jisuan class, Shuchu class, Jframe classes and Main four classes. Among them Jisuan kind basically is the initial points of walk path, and remove

7、 not legal point; Shuchu main kinds of the realization of the optimal algorithm; Jframe class for the graphical user interface design, the main finish drawing the board and results of the print; Main kinds of major is responsible for the entire process control. Final test and operation, realize the

8、requirements through all, make the ideal effect.Key words: data structure horse on board Java graphical interface第一章 需求分析數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生必做的集中實(shí)踐性環(huán)節(jié)之一,是學(xué)習(xí)完數(shù)據(jù)結(jié)構(gòu)課程后進(jìn)行的一次全面的綜合練習(xí)。其目的在于通過(guò)課程設(shè)計(jì),使學(xué)生能夠得到較系統(tǒng)的技能訓(xùn)練,從而鞏固和加深對(duì)數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)理論知識(shí)的理解,培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)理論知識(shí)解決實(shí)際問(wèn)題的能力,使學(xué)生成為具有扎實(shí)的計(jì)算機(jī)理論基礎(chǔ)和較強(qiáng)的獨(dú)立動(dòng)手能力的復(fù)合型、應(yīng)用型人才。馬踏棋盤問(wèn)題是一

9、個(gè)古老而著名的問(wèn)題,它最初是由大數(shù)學(xué)家Euler提出的.問(wèn)題是這樣的:國(guó)際象棋中的棋子(叫作馬)在一個(gè)空棋盤內(nèi)移動(dòng),問(wèn)它能否經(jīng)過(guò)64格中的每一格且只經(jīng)過(guò)一次?(馬按L行移動(dòng),即在某方向前進(jìn)兩格接著在與原方向垂直的方向上前進(jìn)一格)本程序?qū)崿F(xiàn)了馬踏棋盤問(wèn)題的求解,并能夠演示起始位置在棋盤上任何位置的問(wèn)題的實(shí)現(xiàn).程序采用圖形演示,使算法的描述更形象,更生動(dòng),使教學(xué)更能產(chǎn)生良好的效果。第二章 概要設(shè)計(jì)2.1系統(tǒng)描述本程序采用myeclipse8.5.0來(lái)編制整個(gè)程序,這樣既可以使大家對(duì)算法的實(shí)現(xiàn)有了一定的了解,也可以熟悉一下Java圖形界面以及Java語(yǔ)言的命名規(guī)范。作為數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì),本人希望同

10、時(shí)也能讓大家順便熟悉一下Java的基本語(yǔ)言結(jié)構(gòu)和強(qiáng)大的開(kāi)發(fā)能力。在馬踏棋盤的課程設(shè)計(jì)中,我們嚴(yán)格按照面向?qū)ο蟮乃枷脒M(jìn)行開(kāi)發(fā),其中有Jisuan類, Shuchu類, Jframe類和Main類。讀者應(yīng)注意各個(gè)類之間的關(guān)系,以便也能順道理解Java中類的思想。2.2運(yùn)行環(huán)境 本程序是在windows7, myeclipse8.5.0的環(huán)境下運(yùn)行的。2.3馬踏棋盤流程將馬隨機(jī)地放在國(guó)際象棋的8*8棋盤Board88的某個(gè)方格中,然后令馬按走棋規(guī)則開(kāi)始進(jìn)行移動(dòng)。要求馬將棋盤上的每個(gè)方格進(jìn)入且只進(jìn)入一次,走遍全部64個(gè)方格。2.4算法設(shè)計(jì)2.4.1 設(shè)計(jì)思想 利用某種算法直接找到最優(yōu)解,算出最優(yōu)路徑,

11、而不是一步步嘗試遇到錯(cuò)誤回溯。設(shè)一數(shù)組與棋盤坐標(biāo)一一對(duì)應(yīng)(1,1)到(8,8),存放每個(gè)棋盤格上應(yīng)算出的路徑數(shù)字。 路徑從164存放到與棋盤數(shù)組中對(duì)應(yīng)的數(shù)組中,將數(shù)組當(dāng)形參傳到圖形用戶界面,利用Graphics繪制棋盤并打印數(shù)組。 建立主函數(shù),調(diào)用計(jì)算路徑類和繪制棋盤類。2.4.2程序結(jié)構(gòu)說(shuō)明程序的運(yùn)行關(guān)系如圖2-1. 圖2-1 程序運(yùn)行關(guān)系圖2.4.3算法結(jié)構(gòu)設(shè)計(jì)最優(yōu)算法設(shè)計(jì) 準(zhǔn)備階段: (a) 按國(guó)際象棋馬的走法,最多有8種可能,創(chuàng)建數(shù)組int path=0,0,0,1,1,2,2,1,-2,3,-1,2,4,-1,-2,5,2,1,6,2,-1,7,-2,1,8,-2,-1存放8中可能,

12、為了滿足與棋盤一一對(duì)應(yīng)故用38數(shù)組。 (b) 創(chuàng)建數(shù)組int way=new int99存放棋盤每點(diǎn)可走的路徑數(shù)。 (c) 創(chuàng)建數(shù)組int output=new int99存放最終繪制棋盤格中輸出的數(shù)字,即行走路線。 (d) 計(jì)算出棋盤上每點(diǎn)的可走路徑數(shù),存入way數(shù)組,超出棋盤邊界的點(diǎn)被舍棄,讓數(shù)組與棋盤一一對(duì)應(yīng)。 計(jì)算階段: (a) 從用戶輸入起始點(diǎn)坐標(biāo),存入m,n。 (b) 先假設(shè)每個(gè)點(diǎn)最小可走路徑數(shù)為min=8。 (c) 根據(jù)way數(shù)組中已經(jīng)存放的值與假設(shè)的最小可走路徑數(shù)為8比較,若小于8則存入min,如此循環(huán)最多8次,找出使min值最小的點(diǎn),設(shè)為下次要走的點(diǎn),依次類推,直至找出64個(gè)

13、點(diǎn),即最優(yōu)路徑。用戶輸入 利用java提供的Scanner函數(shù)從操作臺(tái)進(jìn)行輸入。圖形用戶界面 利用Jframe窗體建立圖形用戶界面,編寫構(gòu)造函數(shù),用Graphics()函數(shù)繪制矩形并填充顏色,畫出棋盤表格,并利用drawString()在相應(yīng)的棋盤坐標(biāo)中打印出output數(shù)組中數(shù)字。第三章 詳細(xì)設(shè)計(jì)3.1 Jisuan類實(shí)現(xiàn) public class jisuan /計(jì)算棋盤中各點(diǎn)可走路徑public void init(intway)int i,j,k,x,y;intpath=0,0,0,1,1,2,2,1,-2,3,-1,2,4,-1,-2,5,2,1,6,2,-1,7,-2,1,8,-2

14、,-1; /存放馬的行走規(guī)則,為了使坐標(biāo)和棋盤一一對(duì)應(yīng),定義83數(shù)組 for(i=1;i=8;i+) /先初始各點(diǎn)可走路徑為零 for(j=1;j=8;j+) wayij=0;for(i=1;i=8;i+) /計(jì)算各點(diǎn)可走路徑,如果合法便存儲(chǔ) for(j=1;j=8;j+) for(k=1;k=1&x=1&y=8) /判斷是否落在棋盤內(nèi),否則不存儲(chǔ) wayij+ ; /init/jisuan注釋: 此類主要初始化各點(diǎn)的可走路徑,并且刪除不合法的點(diǎn)。 首先初始化way數(shù)組為0,然后利用for循環(huán)嵌套實(shí)現(xiàn)64次運(yùn)算,每次再嵌套一個(gè)執(zhí)行8次的循環(huán),利用k+實(shí)現(xiàn)改變行走路線,前提是path數(shù)組中已經(jīng)存

15、儲(chǔ)了馬的行走規(guī)則,根據(jù)每次到達(dá)的點(diǎn)判斷是否落在棋盤內(nèi),若合法則相應(yīng)坐標(biāo)格的way數(shù)組自加1,以此來(lái)計(jì)算出棋盤中各點(diǎn)的可走路線數(shù),完成最優(yōu)算法的準(zhǔn)備階段。3.2 Shuchu類算法實(shí)現(xiàn)public class shuchu public void calcu(intoutput,intway) int z,x,y,m,n,k,min; int i=0;int j=0; int path=0,0,0,1,1,2,2,1,-2,3,-1,2,4,-1,-2,5,2,1,6,2,-1,7,-2,1,8,-2,-1;System.out.println(請(qǐng)輸入馬的起始位置坐標(biāo):x y(其中x,y均為正整

16、數(shù),0x9,0y=1&m=1&n=8) /判斷輸入位置是否合法 for(z=1;z=64;z+) /分64次寫入 min = 8; /初始可選路徑最小值為8 outputmn=z; /用output來(lái)記錄所走路徑 waymn=0; /走過(guò)的點(diǎn)可選路徑設(shè)為0,沒(méi)走過(guò)設(shè)為可選路徑數(shù) for(k=1;k=1&x=1&y=8) if(wayxy!=0) /沒(méi)走過(guò)的點(diǎn) -wayxy; /可選路徑數(shù)減1,因?yàn)楸军c(diǎn)剛走過(guò) if(wayxymin) /如果可選路徑數(shù)小于min min=wayxy; /使axy存放最小可選路徑數(shù)的點(diǎn) i=x; j=y; /form=i;n=j; /下一個(gè)點(diǎn)的坐標(biāo) /for“64

17、次” /判斷合法 elseSystem.out.println(錯(cuò)誤:坐標(biāo)超出棋盤邊界!); /calu/shuchu注釋: 此類為主要最優(yōu)算法的實(shí)現(xiàn)類。 首先依然定義馬的行走路線,和一些循環(huán)中用到的變量。然后利用Scanner函數(shù)進(jìn)行用戶輸入。橫縱坐標(biāo)存入m和n。 判斷起始坐標(biāo)是否合法,合法則用一個(gè)64次的循環(huán)分別寫入output數(shù)組中馬的行走路線,假設(shè)min的值為8。 用一個(gè)8次循環(huán)分別列出馬的可走路徑,若合法且是沒(méi)走過(guò)的點(diǎn)將對(duì)應(yīng)的way數(shù)組減1,因?yàn)橄麓稳糇叩酱它c(diǎn),可選路徑數(shù)必然要減1,不可走已經(jīng)走過(guò)的點(diǎn)。如果該點(diǎn)的可走路徑數(shù)min中的值,則更新為此點(diǎn)的way數(shù)組值。最后將是min保持最

18、小的點(diǎn)的坐標(biāo)賦值給(m,n),作為馬將走的下一個(gè)點(diǎn)將此點(diǎn)的output數(shù)組值更新為2。以此類推馬的整個(gè)行走路線就完成了,且已經(jīng)將164分別寫入到output數(shù)組中.3.3Jframe類的實(shí)現(xiàn)import java.awt.Color;import javax.swing.*;import java.awt.Graphics;import java.awt.Font;public class Jframe extends JFrameint seed=new int99;public Jframe() /窗體構(gòu)造函數(shù)this.setSize(500,500);setDefaultCloseOpe

19、ration(JFrame.EXIT_ON_CLOSE);setVisible(true);public void paint(Graphics g) /創(chuàng)建Graphics畫圖super.paint(g);g.setColor(Color.black);g.drawRect(50,50,400,400); /畫棋盤邊界for(int i=1;i=4;i+)for(int j=1;j=4;j+)g.fillRect(100*j, 100*i-50, 50, 50); /畫棋盤黑格1for(int i=1;i=4;i+)for(int j=1;j=4;j+)g.fillRect(100*j-50

20、, 100*i, 50, 50); /畫棋盤黑格2g.setColor(Color.blue);Font num=new Font(楷體,Font.BOLD,25);g.setFont(num); /設(shè)置字體for(int i=1;i=8;i+)for(int j=1;j=8;j+)g.drawString(seedij+, 50*j+15,50*i+35); /打印棋盤格中數(shù)字public void write(int output) /將結(jié)果數(shù)組引入Jframe類,并賦給數(shù)組seedfor(int i=1;i=8;i+)for(int j=1;j=8;j+)seedij=outputij;

21、 /Jframe注釋: 此類為圖形用戶界面,主要完成棋盤的繪制和結(jié)果的打印. 創(chuàng)建構(gòu)造函數(shù),設(shè)置窗體大小,使窗體可見(jiàn). 創(chuàng)建Graphics()畫圖函數(shù),設(shè)置背景顏色為黑色,繪制棋盤邊框.因?yàn)閲?guó)際象棋棋盤為黑白交替方格,所以將黑色部分用Rectfill()函數(shù)畫出,就形成了棋盤,利用for循環(huán)將黑色方格分兩次畫完,設(shè)計(jì)的棋盤坐標(biāo)如下: (50,50) (400,50)(50,400) (400,400)圖3-1 棋盤的設(shè)計(jì)每個(gè)格子的長(zhǎng)寬是50,50。左斜線是第一次畫的黑格,右斜線是第二次畫的黑格.3.4Main類的實(shí)現(xiàn)public class Main public static void m

22、ain(String args) int i,j;int way=new int99; /初始化可算路徑數(shù)數(shù)組int output=new int99; /初始化結(jié)果輸出數(shù)組jisuan ad=new jisuan();ad.init(way); /運(yùn)行計(jì)算類shuchu aw=new shuchu();aw.calcu(output, way); /運(yùn)行輸出類System.out.printf(運(yùn)行結(jié)果如下(稍后會(huì)以棋盤界面顯示,為便于看圖,相鄰兩步之間棋盤顏色不同):n);for(i=1;i=8;i+) /輸出 for(j=1;j=8;j+)System.out.printf(%6d,ou

23、tputij);System.out.printf(n);Jframe w=new Jframe(); /圖形用戶輸出w.write(output); /載入結(jié)果輸出數(shù)組 /main /Main注釋:創(chuàng)建way和output數(shù)組.調(diào)用類并創(chuàng)建對(duì)象,對(duì)象調(diào)用函數(shù).在控制臺(tái)同樣輸出一份結(jié)果,和圖形用戶界面的相同.創(chuàng)建窗體,并傳入output數(shù)組參數(shù)流程圖如下:圖3-2 Main類流程圖程序的源代碼參見(jiàn)附錄。第四章 調(diào)試分析這次課程設(shè)計(jì)我遇到如下問(wèn)題,最終通過(guò)調(diào)試分析都得到了很好的解決。4.1最優(yōu)算法的求解,無(wú)從下手,最后借鑒前輩的思路想到了走最小度數(shù)點(diǎn)的算法。4.2 從shuchu類計(jì)算的結(jié)果無(wú)法

24、傳入Jframe函數(shù),曾試過(guò)全局變量,但是分裝性不好,最后把結(jié)果數(shù)組當(dāng)作形式參數(shù)傳入Jframe類的一個(gè)write()函數(shù)。4.3無(wú)法在棋盤的格子上打印數(shù)字,因?yàn)閐rawstring()函數(shù)只能打印字符型變量,而我的output是整形變量,最后利用drawstring(output+“”,50,50)一個(gè)小技巧將int型轉(zhuǎn)化為string型。4.4剛開(kāi)始棋盤畫得很麻煩,所以后期直接用填充色矩形畫出黑的,其余的就成了白的,并分兩步話出棋盤,感覺(jué)比較簡(jiǎn)單。4.5開(kāi)始無(wú)法使數(shù)組與棋盤坐標(biāo)一一對(duì)應(yīng)。程序運(yùn)行截屏見(jiàn)附錄B。第五章 總結(jié)5.1遇到的問(wèn)題5.11最優(yōu)算法的求解,無(wú)從下手,最后借鑒前輩的思路想

25、到了走最小度數(shù)點(diǎn)的算法。5.12 從shuchu類計(jì)算的結(jié)果無(wú)法傳入Jframe函數(shù),曾試過(guò)全局變量,但是分裝性不好,最后把結(jié)果數(shù)組當(dāng)作形式參數(shù)傳入Jframe類的一個(gè)write()函數(shù)。5.13無(wú)法在棋盤的格子上打印數(shù)字,因?yàn)閐rawstring()函數(shù)只能打印字符型變量,而我的output是整形變量,最后利用drawstring(output+“”,50,50)一個(gè)小技巧將int型轉(zhuǎn)化為string型。5.14剛開(kāi)始棋盤畫得很麻煩,所以后期直接用填充色矩形畫出黑的,其余的就成了白的,并分兩步話出棋盤,感覺(jué)比較簡(jiǎn)單。5.15開(kāi)始無(wú)法使數(shù)組與棋盤坐標(biāo)一一對(duì)應(yīng)。5.2收獲與體會(huì)總體感覺(jué)這個(gè)課題還

26、是比較簡(jiǎn)單的,不找出問(wèn)題的根本,就無(wú)法理解自己獲得的是什么,在一個(gè)星期的課程設(shè)計(jì)中,我將掌握的專業(yè)理論知識(shí)很好地運(yùn)用到對(duì)這個(gè)課題的理解中.做到了理論和實(shí)踐相結(jié)合,在實(shí)踐中加深了對(duì)專業(yè)理論知識(shí)的理解,并提升了對(duì)理論知識(shí)的運(yùn)用能力,獲得了許多寶貴的經(jīng)驗(yàn)。5.21 鞏固和加深了對(duì)數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運(yùn)用本課程所學(xué)知識(shí)的能力。5.22 培養(yǎng)了我選用參考書,查閱手冊(cè)及文獻(xiàn)資料的能力。培養(yǎng)獨(dú)立思考,深入研究,分析問(wèn)題、解決問(wèn)題的能力。5.23 過(guò)實(shí)際編譯系統(tǒng)的分析設(shè)計(jì)、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法。5.24 能夠按要求編寫課程設(shè)計(jì)報(bào)告書,能正確闡述設(shè)計(jì)和實(shí)驗(yàn)結(jié)果,正確繪制系統(tǒng)和程序框

27、圖。5.25 通過(guò)這次課程設(shè)計(jì),培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟(jì)觀念和全局觀念。由于時(shí)間緊迫,我做的這個(gè)課程設(shè)計(jì)可能還不十分完善,但重要的是,這次課程設(shè)計(jì)讓我學(xué)到了很多知識(shí)。通過(guò)這次課程設(shè)計(jì),我對(duì)數(shù)據(jù)結(jié)構(gòu)課程有了進(jìn)一步的了解和認(rèn)識(shí),對(duì)數(shù)據(jù)結(jié)構(gòu)的理解上升到一個(gè)新的高度,也充分地了解到一個(gè)好的算法對(duì)于程序的重要性。最后再次感謝這次課程設(shè)計(jì)提供給我?guī)椭睦蠋煟瑢W(xué)們以及參考文獻(xiàn)的作者們,謝謝你們!參考文獻(xiàn)【1】 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(c語(yǔ)言版).北京:清華大學(xué)出版社,2007【2】Thomas H. Cormen, Charles E. Leiserson, Ronald

28、 L. Rivest,,Clifford Stein.Introduction to Algorithms, Second Edition. 北京: 高等教育出版社, 2002【3】【美】s巴斯.計(jì)算機(jī)算法:設(shè)計(jì)與分析引論.朱洪等譯.上海:復(fù)旦大學(xué)出版社,19854 Ralph Morelli. Java面向?qū)ο蟪绦蛟O(shè)計(jì)(第三版).北京:清華大學(xué)出版社, 2008【5】張亦輝,馮華,胡潔.Java面向?qū)ο蟪绦蛟O(shè)計(jì).北京:人民郵電出版社,2008附錄A 源代碼-class jisuan-public class jisuan /計(jì)算棋盤中各點(diǎn)可走路徑public void init(intway

29、)int i,j,k,x,y;int path=0,0,0,1,1,2,2,1,-2,3,-1,2,4,-1,-2,5,2,1,6,2,-1,7,-2,1,8,-2,-1;/存放馬的行走規(guī)則,為了使坐標(biāo)和棋盤一一對(duì)應(yīng)定義8*3數(shù)組for(i=1;i=8;i+) /先初始各點(diǎn)可走路徑為零for(j=1;j=8;j+)wayij=0;for(i=1;i=8;i+) /計(jì)算各點(diǎn)可走路徑,如果合法便存儲(chǔ)for(j=1;j=8;j+)for(k=1;k=1&x=1&y=8) /判斷是否落在棋盤內(nèi),否則不存儲(chǔ)wayij+; /init /jisuan-class shuchu-import java.ut

30、il.Scanner;public class shuchu public void calcu(intoutput,intway)int z,x,y,m,n,k,min;int i=0;int j=0;int path=0,0,0,1,1,2,2,1,-2,3,-1,2,4,-1,-2,5,2,1,6,2,-1,7,-2,1,8,-2,-1;System.out.println(請(qǐng)輸入馬的起始位置坐標(biāo):x y(其中x,y均為正整數(shù),0x9,0y=1&m=1&n=8) /判斷輸入位置是否合法for(z=1;z=64;z+) /分64次寫入min = 8; /初始可選路徑最小值為8outputm

31、n=z; /用output來(lái)記錄所走路徑waymn=0; /走過(guò)的點(diǎn)可選路徑設(shè)為0,沒(méi)走過(guò)設(shè)為可選路徑數(shù)for(k=1;k=1&x=1&y=8)if(wayxy!=0) /沒(méi)走過(guò)的點(diǎn)-wayxy; /可選路徑數(shù)減1,因?yàn)楸军c(diǎn)剛走過(guò)if(wayxymin) /如果可選路徑數(shù)小于 minmin=wayxy; /使axy存放最小可選路徑數(shù)的點(diǎn)i=x;j=y; /form=i;n=j; /下一個(gè)點(diǎn)的坐標(biāo) /for“64次” /判斷合法elseSystem.out.println(錯(cuò)誤:坐標(biāo)超出棋盤邊界!); /calu /shuchu-class Jframe-import java.awt.Colo

32、r;import javax.swing.*;import java.awt.Graphics;import java.awt.Font;public class Jframe extends JFrameint seed=new int99;public Jframe() /窗體構(gòu)造函數(shù)this.setSize(500,500);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);public void paint(Graphics g) /創(chuàng)建Graphics畫圖super.paint(g);g.setColor(

33、Color.black);g.drawRect(50,50,400,400); /畫棋盤邊界for(int i=1;i=4;i+)for(int j=1;j=4;j+)g.fillRect(100*j, 100*i-50, 50, 50); /畫棋盤黑格1for(int i=1;i=4;i+)for(int j=1;j=4;j+)g.fillRect(100*j-50, 100*i, 50, 50); /畫棋盤黑格2g.setColor(Color.blue);Font num=new Font(楷體,Font.BOLD,25);g.setFont(num); /設(shè)置字體for(int i=1

34、;i=8;i+)for(int j=1;j=8;j+)g.drawString(seedij+, 50*j+15,50*i+35); /打印棋盤格中數(shù)字public void write(int output) /將結(jié)果數(shù)組引入Jframe類,并賦給數(shù)組seedfor(int i=1;i=8;i+)for(int j=1;j=8;j+)seedij=outputij; /Jframe-class Main-public class Main public static void main(String args) int i,j;int way=new int99; /初始化可算路徑數(shù)數(shù)組in

35、t output=new int99; /初始化結(jié)果輸出數(shù)組jisuan ad=new jisuan();ad.init(way); /運(yùn)行計(jì)算類shuchu aw=new shuchu();aw.calcu(output, way); /運(yùn)行輸出類System.out.printf(運(yùn)行結(jié)果如下(稍后會(huì)以棋盤界面顯示,為便于看圖,相鄰兩步之間棋盤顏色不同):n);for(i=1;i=8;i+) /輸出 for(j=1;j=8;j+)System.out.printf(%6d,outputij);System.out.printf(n);Jframe w=new Jframe(); /圖形用戶輸出w.write(output); /載入結(jié)果輸出數(shù)組 /main /Main附錄B 運(yùn)行截屏4.1第一次輸入坐標(biāo)(6,6)圖4-1 第一次輸入截圖圖4-2 第一次運(yùn)行結(jié)果截圖(其中數(shù)字編號(hào)即為馬踏棋盤的順序)4.2第二次輸入坐標(biāo)(8,1)圖4-3 第二次輸入截圖圖4-4 第二次運(yùn)行結(jié)果截圖4.3第三次輸入坐標(biāo)(5,9)圖4-5 第三次輸入截圖圖4-6 第三次運(yùn)行結(jié)果截圖26

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!