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

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

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

  • 資源ID:83320858       資源大小:237.50KB        全文頁數(shù):26頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

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

word前言學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的最終目的是解決實(shí)際的應(yīng)用問題,特別是非數(shù)值計(jì)算類型的應(yīng)用問題,數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)就是為此目的一次實(shí)際訓(xùn)練。要求我們在對題目進(jìn)展獨(dú)立分析的根底上,完成設(shè)計(jì)和開發(fā),并最終承受嚴(yán)格的測試考核。以深化對數(shù)據(jù)結(jié)構(gòu)課程中根本概念、理論和方法的理解,提升綜合運(yùn)用所學(xué)知識處理實(shí)際問題的能力,使我們的的程序設(shè)計(jì)能力與調(diào)試水平有一個(gè)明顯的提升。課程設(shè)計(jì)所安排的題目,都有一定的難度和深度,從抽象數(shù)據(jù)類型的提煉、數(shù)據(jù)結(jié)構(gòu)選擇到算法的設(shè)計(jì),均由我們每個(gè)人自主完成。在一周的時(shí)間,歷經(jīng)查找參考資料、使用技術(shù)手冊、設(shè)計(jì)編碼和撰寫文檔的實(shí)踐,進(jìn)一步升華對軟件工程師和程序員人格素質(zhì)的認(rèn)識和理解。本課程設(shè)計(jì)的主要設(shè)計(jì)容是: 設(shè)計(jì)一個(gè)馬踏棋盤問題的演示程序。即將馬隨機(jī)地放在國際象棋的8*8棋盤的某個(gè)方格中,然后令馬按走棋規(guī)如此開始進(jìn)展移動(dòng)。要求馬將棋盤上的每個(gè)方格進(jìn)入且只進(jìn)入一次,走遍全部64個(gè)方格。要求編制非遞歸程序,求出馬的行走路線,將數(shù)字1,2,64依次填入一個(gè)8*8的方陣在屏幕上顯示輸出。針對該問題本課程設(shè)計(jì)采用的是面向?qū)ο蟮拈_發(fā)語言Java,在Windows7, myeclipse8.5.0的平臺上開發(fā)出來,并有圖形界面。最終較好的實(shí)現(xiàn)了全部要求,達(dá)到了預(yù)期效果。從中我也學(xué)到了很多,不僅僅是課堂外的新知識,還有那種會(huì)查資料,會(huì)學(xué)習(xí)新知識的能力。這個(gè)課程設(shè)計(jì)的順利完成,離不開胡教師的指導(dǎo)和幫助,在他的細(xì)心指導(dǎo)和幫助下,我對馬踏棋盤程序開發(fā)的整個(gè)流程有了深刻地了解和系統(tǒng)地掌握,在這里學(xué)生表示真誠地感。另外也這次課程設(shè)計(jì)提供應(yīng)我?guī)椭耐瑢W(xué)們。此外,本課程設(shè)計(jì)還參考了一些文獻(xiàn)資料,在此向這些文獻(xiàn)資料的作者深表意。本課程設(shè)計(jì)可作為數(shù)據(jù)結(jié)構(gòu)和Java課程教學(xué)的參考案例。由于時(shí)間倉促和本人水平所限,設(shè)計(jì)中難免有不當(dāng)和欠妥之處,敬請教師不吝批評指正。 筆者目錄摘要3第一章 需求分析.4第二章 概要設(shè)計(jì).52.1系統(tǒng)描述。.5.5馬踏棋盤流程5算法設(shè)計(jì)第三章 詳細(xì)設(shè)計(jì)3.1 Jisuan類實(shí)現(xiàn)Disizhang 4,2Diwu Cankaowenxian Fulu 摘要本課程設(shè)計(jì)中的程序?qū)崿F(xiàn)了馬踏棋盤問題的求解,并能夠演示起始位置在棋盤上任何位置的問題的實(shí)現(xiàn).程序采用圖形演示,使算法的描述更形象,更生動(dòng),使教學(xué)更能產(chǎn)生良好的效果。對于該程序,我嚴(yán)格按照面向?qū)ο蟮乃枷脒M(jìn)展開發(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)行通過,實(shí)現(xiàn)了全部要求,取得了理想效果。關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu) 馬踏棋盤 Java 圖形界面AbstractThis 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 description, 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 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 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í)。其目的在于通過課程設(shè)計(jì),使學(xué)生能夠得到較系統(tǒng)的技能訓(xùn)練,從而鞏固和加深對數(shù)據(jù)結(jié)構(gòu)的根底理論知識的理解,培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)理論知識解決實(shí)際問題的能力,使學(xué)生成為具有扎實(shí)的計(jì)算機(jī)理論根底和較強(qiáng)的獨(dú)立動(dòng)手能力的復(fù)合型、應(yīng)用型人才。馬踏棋盤問題是一個(gè)古老而著名的問題,它最初是由大數(shù)學(xué)家Euler提出的.問題是這樣的:國際象棋中的棋子(叫作馬)在一個(gè)空棋盤移動(dòng),問它能否經(jīng)過64格中的每一格且只經(jīng)過一次?(馬按L行移動(dòng),即在某方向前進(jìn)兩格接著在與原方向垂直的方向上前進(jìn)一格)本程序?qū)崿F(xiàn)了馬踏棋盤問題的求解,并能夠演示起始位置在棋盤上任何位置的問題的實(shí)現(xiàn).程序采用圖形演示,使算法的描述更形象,更生動(dòng),使教學(xué)更能產(chǎn)生良好的效果。第二章 概要設(shè)計(jì)本程序采用myeclipse8.5.0來編制整個(gè)程序,這樣既可以使大家對算法的實(shí)現(xiàn)有了一定的了解,也可以熟悉一下Java圖形界面以與Java語言的命名規(guī)。作為數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì),本人希望同時(shí)也能讓大家順便熟悉一下Java的根本語言結(jié)構(gòu)和強(qiáng)大的開發(fā)能力。在馬踏棋盤的課程設(shè)計(jì)中,我們嚴(yán)格按照面向?qū)ο蟮乃枷脒M(jìn)展開發(fā),其中有Jisuan類, Shuchu類, Jframe類和Main類。讀者應(yīng)注意各個(gè)類之間的關(guān)系,以便也能順道理解Java中類的思想。馬踏棋盤流程將馬隨機(jī)地放在國際象棋的8*8棋盤Board88的某個(gè)方格中,然后令馬按走棋規(guī)如此開始進(jìn)展移動(dòng)。要求馬將棋盤上的每個(gè)方格進(jìn)入且只進(jìn)入一次,走遍全部64個(gè)方格。算法設(shè)計(jì) 設(shè)計(jì)思想 利用某種算法直接找到最優(yōu)解,算出最優(yōu)路徑,而不是一步步嘗試遇到錯(cuò)誤回溯。設(shè)一數(shù)組與棋盤坐標(biāo)一一對應(yīng)1,1到8,8,存放每個(gè)棋盤格上應(yīng)算出的路徑數(shù)字。 路徑從164存放到與棋盤數(shù)組中對應(yīng)的數(shù)組中,將數(shù)組當(dāng)形參傳到圖形用戶界面,利用Graphics繪制棋盤并打印數(shù)組。 建立主函數(shù),調(diào)用計(jì)算路徑類和繪制棋盤類。程序的運(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) 按國際象棋馬的走法,最多有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中可能,為了滿足與棋盤一一對應(yīng)故用3×8數(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ù)組與棋盤一一對應(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è)點(diǎn),即最優(yōu)路徑。用戶輸入 利用java提供的Scanner函數(shù)從操作臺進(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,-1; /存放馬的行走規(guī)如此,為了使坐標(biāo)和棋盤一一對應(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<=8;k+) x=i;y=j; x=x+pathk1; y=y+pathk2; /x,y代表走下一步后的坐標(biāo),通過k的增長,改變行走的方向 if(x>=1&&x<=8&&y>=1&&y<=8) /判斷是否落在棋盤,否如此不存儲(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)存儲(chǔ)了馬的行走規(guī)如此,根據(jù)每次到達(dá)的點(diǎn)判斷是否落在棋盤,假如合法如此相應(yīng)坐標(biāo)格的way數(shù)組自加1,以此來計(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("請輸入馬的起始位置坐標(biāo):x y(其中x,y均為正整數(shù),0<x<9,0<y<9,輸入時(shí)兩數(shù)之間以空格隔開)");Scanner scan=new Scanner(System.in); /從鍵盤輸入起始點(diǎn)坐標(biāo)m=scan.nextInt();n=scan.nextInt();if(m>=1&&m<=8&&n>=1&&n<=8) /判斷輸入位置是否合法 for(z=1;z<=64;z+) /分64次寫入 min = 8; /初始可選路徑最小值為8 outputmn=z; /用output來記錄所走路徑 waymn=0; /走過的點(diǎn)可選路徑設(shè)為0,沒走過設(shè)為可選路徑數(shù) for(k=1;k<=8;k+) /走最小可選路徑數(shù)的點(diǎn) x=m+pathk1; y=n+pathk2; /x,y代表走下一步后的坐標(biāo),通過k的增長,改變行走的方向 if(x>=1&&x<=8&&y>=1&&y<=8) if(wayxy!=0) /沒走過的點(diǎn) -wayxy; /可選路徑數(shù)減1,因?yàn)楸军c(diǎn)剛走過 if(wayxy<min) /如果可選路徑數(shù)小于min min=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注釋: 此類為主要最優(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)分別列出馬的可走路徑,假如合法且是沒走過的點(diǎn)將對應(yīng)的way數(shù)組減1,因?yàn)橄麓渭偃缱叩酱它c(diǎn),可選路徑數(shù)必然要減1,不可走已經(jīng)走過的點(diǎn)。如果該點(diǎn)的可走路徑數(shù)<min中的值,如此更新為此點(diǎn)的way數(shù)組值。最后將是min保持最小的點(diǎn)的坐標(biāo)賦值給m,n,作為馬將走的下一個(gè)點(diǎn)將此點(diǎn)的output數(shù)組值更新為2。以此類推馬的整個(gè)行走路線就完成了,且已經(jīng)將164分別寫入到output數(shù)組中.import java.awt.Color;import javax.swing.*;import java.awt.Graphics;import java.awt.Font;publicclassJframeextends JFrameint seed=newint99;public Jframe() /窗體構(gòu)造函數(shù)this.setSize(500,500);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);publicvoid 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, 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ù)字publicvoid write(int output) /將結(jié)果數(shù)組引入Jframe類,并賦給數(shù)組seedfor(int i=1;i<=8;i+)for(int j=1;j<=8;j+)seedij=outputij; /Jframe注釋: 此類為圖形用戶界面,主要完成棋盤的繪制和結(jié)果的打印. 創(chuàng)建構(gòu)造函數(shù),設(shè)置窗體大小,使窗體可見. 創(chuàng)建Graphics()畫圖函數(shù),設(shè)置背景顏色為黑色,繪制棋盤邊框.因?yàn)閲H象棋棋盤為黑白交替方格,所以將黑色局部用Rectfill()函數(shù)畫出,就形成了棋盤,利用for循環(huán)將黑色方格分兩次畫完,設(shè)計(jì)的棋盤坐標(biāo)如下: (50,50) (400,50)(50,400) (400,400)圖3-1 棋盤的設(shè)計(jì)每個(gè)格子的長寬是50,50。左斜線是第一次畫的黑格,右斜線是第二次畫的黑格.publicclass Main publicstaticvoid main(String args) int i,j;int way=newint99; /初始化可算路徑數(shù)數(shù)組int output=newint99; /初始化結(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注釋:創(chuàng)建way和output數(shù)組.調(diào)用類并創(chuàng)建對象,對象調(diào)用函數(shù).在控制臺同樣輸出一份結(jié)果,和圖形用戶界面的一樣.創(chuàng)建窗體,并傳入output數(shù)組參數(shù)流程圖如下:圖3-2 Main類流程圖程序的源代碼參見附錄。第四章 調(diào)試分析這次課程設(shè)計(jì)我遇到如下問題,最終通過調(diào)試分析都得到了很好的解決。4.1最優(yōu)算法的求解,無從下手,最后借鑒前輩的思路想到了走最小度數(shù)點(diǎn)的算法。4.2 從shuchu類計(jì)算的結(jié)果無法傳入Jframe函數(shù),曾試過全局變量,但是分裝性不好,最后把結(jié)果數(shù)組當(dāng)作形式參數(shù)傳入Jframe類的一個(gè)write函數(shù)。4.3無法在棋盤的格子上打印數(shù)字,因?yàn)閐rawstring函數(shù)只能打印字符型變量,而我的output是整形變量,最后利用drawstringoutput+“,50,50一個(gè)小技巧將int型轉(zhuǎn)化為string型。4.4剛開始棋盤畫得很麻煩,所以后期直接用填充色矩形畫出黑的,其余的就成了白的,并分兩步話出棋盤,感覺比擬簡單。4.5開始無法使數(shù)組與棋盤坐標(biāo)一一對應(yīng)。程序運(yùn)行截屏見附錄B。第五章 總結(jié)5.11最優(yōu)算法的求解,無從下手,最后借鑒前輩的思路想到了走最小度數(shù)點(diǎn)的算法。5.12 從shuchu類計(jì)算的結(jié)果無法傳入Jframe函數(shù),曾試過全局變量,但是分裝性不好,最后把結(jié)果數(shù)組當(dāng)作形式參數(shù)傳入Jframe類的一個(gè)write函數(shù)。5.13無法在棋盤的格子上打印數(shù)字,因?yàn)閐rawstring函數(shù)只能打印字符型變量,而我的output是整形變量,最后利用drawstringoutput+“,50,50一個(gè)小技巧將int型轉(zhuǎn)化為string型。5.14剛開始棋盤畫得很麻煩,所以后期直接用填充色矩形畫出黑的,其余的就成了白的,并分兩步話出棋盤,感覺比擬簡單。5.15開始無法使數(shù)組與棋盤坐標(biāo)一一對應(yīng)。5.2收獲與體會(huì)總體感覺這個(gè)課題還是比擬簡單的,不找出問題的根本,就無法理解自己獲得的是什么,在一個(gè)星期的課程設(shè)計(jì)中,我將掌握的專業(yè)理論知識很好地運(yùn)用到對這個(gè)課題的理解中.做到了理論和實(shí)踐相結(jié)合,在實(shí)踐中加深了對專業(yè)理論知識的理解,并提升了對理論知識的運(yùn)用能力,獲得了許多寶貴的經(jīng)驗(yàn)。5.21 鞏固和加深了對數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運(yùn)用本課程所學(xué)知識的能力。5.22 培養(yǎng)了我選用參考書,查閱手冊與文獻(xiàn)資料的能力。培養(yǎng)獨(dú)立思考,深入研究,分析問題、解決問題的能力。5.23 過實(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)和程序框圖。5.25 通過這次課程設(shè)計(jì),培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀念、經(jīng)濟(jì)觀念和全局觀念。由于時(shí)間緊迫,我做的這個(gè)課程設(shè)計(jì)可能還不十分完善,但重要的是,這次課程設(shè)計(jì)讓我學(xué)到了很多知識。通過這次課程設(shè)計(jì),我對數(shù)據(jù)結(jié)構(gòu)課程有了進(jìn)一步的了解和認(rèn)識,對數(shù)據(jù)結(jié)構(gòu)的理解上升到一個(gè)新的高度,也充分地了解到一個(gè)好的算法對于程序的重要性。最后再次感這次課程設(shè)計(jì)提供應(yīng)我?guī)椭慕處?,同學(xué)們以與參考文獻(xiàn)的作者們,你們!參考文獻(xiàn)【1】 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)c語言版.:清華大學(xué),2007【2】Thomas H. Cormen, Charles E. Leiserson, Ronald 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-publicclass jisuan /計(jì)算棋盤中各點(diǎn)可走路徑publicvoid init(intway)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)和棋盤一一對應(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<=8;k+) x=i;y=j;x=x+pathk1;y=y+pathk2; /x,y代表走下一步后的坐標(biāo),通過k的增長,改變行走的方向if(x>=1&&x<=8&&y>=1&&y<=8) /判斷是否落在棋盤,否如此不存儲(chǔ)wayij+; /init /jisuan-class shuchu-import java.util.Scanner;publicclass shuchu publicvoid 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("請輸入馬的起始位置坐標(biāo):x y(其中x,y均為正整數(shù),0<x<9,0<y<9,輸入時(shí)兩數(shù)之間以空格隔開)");Scanner scan=new Scanner(System.in); /從鍵盤輸入起始點(diǎn)坐標(biāo)m=scan.nextInt();n=scan.nextInt();if(m>=1&&m<=8&&n>=1&&n<=8) /判斷輸入位置是否合法for(z=1;z<=64;z+) /分64次寫入min = 8; /初始可選路徑最小值為8outputmn=z; /用output來記錄所走路徑waymn=0; /走過的點(diǎn)可選路徑設(shè)為0,沒走過設(shè)為可選路徑數(shù)for(k=1;k<=8;k+) /走最小可選路徑數(shù)的點(diǎn)x=m+pathk1;y=n+pathk2; /x,y代表走下一步后的坐標(biāo),通過k的增長,改變行走的方向if(x>=1&&x<=8&&y>=1&&y<=8)if(wayxy!=0) /沒走過的點(diǎn)-wayxy; /可選路徑數(shù)減1,因?yàn)楸军c(diǎn)剛走過if(wayxy<min) /如果可選路徑數(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-classJframe-import java.awt.Color;import javax.swing.*;import java.awt.Graphics;import java.awt.Font;publicclassJframeextends JFrameint seed=newint99;public Jframe() /窗體構(gòu)造函數(shù)this.setSize(500,500);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);publicvoid 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, 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ù)字publicvoid 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-publicclass Main publicstaticvoid main(String args) int i,j;int way=newint99; /初始化可算路徑數(shù)數(shù)組int output=newint99; /初始化結(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ù)字編號即為馬踏棋盤的順序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 / 26

注意事項(xiàng)

本文(大數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 馬踏棋盤)為本站會(huì)員(無***)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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