數(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頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、課程設(shè)計(jì)說明書課程名稱:數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)題目:馬的遍歷院 系:計(jì)算機(jī)科學(xué)與信息工程學(xué)院 學(xué)生姓名:學(xué) 號(hào):專業(yè)班級(jí):指導(dǎo)教師:2015年 6月 7日課程設(shè)計(jì)任務(wù)書設(shè)計(jì)題目馬的遍歷學(xué)生姓名冊(cè)心b歹計(jì)算機(jī)科學(xué)與住如術(shù) 所在阮系信息工程學(xué)院專業(yè)、年玻、龍?jiān)O(shè)計(jì)要求:任意行列數(shù)的棋盤中,馬只能走“日”字。馬從任意位置處出發(fā),把棋盤的每一格都走一次,且 只走一次。要求在屏幕上畫出棋盤和馬所有經(jīng)過的路徑。學(xué)生應(yīng)完成的工作:1. 分析題目要求2. 利用數(shù)據(jù)結(jié)構(gòu)和c語言知識(shí)找出實(shí)現(xiàn)方法3. 編程完成實(shí)現(xiàn)4. 按要求撰寫課程設(shè)汁報(bào)告和設(shè)計(jì)總結(jié)。參考文獻(xiàn)閱讀:1. c程序設(shè)計(jì)(第四版),譚浩強(qiáng)清華大學(xué)出版社2. 數(shù)據(jù)結(jié)

2、構(gòu)(c語言版),嚴(yán)蔚敏 吳偉民清華大學(xué)出版社工作計(jì)劃:1. 接到題目后用課余時(shí)間設(shè)計(jì)程序,2. 第14周上機(jī)調(diào)試通過后,答辯,交報(bào)告(具體時(shí)間由各任課教師決定)。任務(wù)下達(dá)日期:2015年4月28日任務(wù)完成日期:2015年6月6日指導(dǎo)教師(簽名):學(xué)生(簽名):馬的遍歷摘 要:中國(guó)象棋中馬采用“日”字走法,對(duì)棋盤上馬所在的結(jié)點(diǎn),一步內(nèi)到達(dá)的結(jié) 點(diǎn)最多有八個(gè),所以可以采用類似圖的深度優(yōu)先遍歷,以馬所在點(diǎn)為初始點(diǎn)對(duì)整個(gè)棋盤 進(jìn)行遍歷。然后按遍歷的順序輸出結(jié)點(diǎn) 可以用一個(gè)二維數(shù)組chessl來表示棋盤,一 開始用來存放步驟號(hào),若走過了則把它賦值為0。對(duì)于動(dòng)態(tài)演示問題,只要在“馬”的 位置顯示“馬”,已

3、經(jīng)走過的位置顯示“”,未走過的位置顯示“廠”“ 丁”“ n 卜” 等制表符,然后清屏,顯示下一步,再清屏,依次類推。關(guān)鍵詞:深度優(yōu)先遍歷;回溯法;數(shù)組存儲(chǔ)棋盤;動(dòng)態(tài)演示;1. 設(shè)計(jì)背景11.1問題描述11. 2基本要求12. 設(shè)計(jì)方案12.1問題分析和任務(wù)定義12. 2概要設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)的選擇23. 方案實(shí)施331數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)33. 2功能函數(shù)設(shè)計(jì)43. 3 編碼實(shí)現(xiàn)54. 結(jié)果與結(jié)論144. 1輸入初始數(shù)據(jù)144. 2判斷能否遍歷144. 3動(dòng)態(tài)演示145. 收獲與致謝156參考文獻(xiàn)151. 設(shè)計(jì)背景1.1問題描述:中國(guó)象棋是10*9的棋盤,馬的走法是“馬走日”,這里忽略了 “蹩腳馬”的情況

4、, 使馬的遍歷問題簡(jiǎn)單化。馬在棋盤上遍歷采用算法當(dāng)中的優(yōu)先算法和回溯法;從入口出發(fā),按某一方向向前 探索,若能走通并且從未走過,即某處可到達(dá),則到達(dá)新丿占,否則探索下一個(gè)方向;如 果發(fā)生“阻塞”的情況,就是后面走不通的情況,則沿原路返回到前一點(diǎn),換一個(gè)方向 再繼續(xù)試探,知道找到一條通路,或無路可走又返冋到入口點(diǎn)。期盼中馬的遍歷采用數(shù) 組進(jìn)行存儲(chǔ),同時(shí)因?yàn)橛谢厮?,所以采用棧的方法,并且為了最后打印方便,采用的?順序棧的方法。同時(shí)還有八個(gè)方向的數(shù)組,和為棧設(shè)計(jì)的每個(gè)點(diǎn)周圍的八個(gè)方向那些可 以走的數(shù)組。1. 2基本要求:棋盤有10行9列,利用chess來表示一個(gè)棋盤,chessij=o或1;其中0

5、表示通路, 1表示不通,當(dāng)從某點(diǎn)向下試探吋,中間點(diǎn)的8個(gè)方向可以試探;棋盤采用數(shù)組形式, 并且這里的數(shù)組比棋盤的數(shù)組規(guī)模稍大,因?yàn)闉榱吮WC邊緣點(diǎn)也有八個(gè)方向可以走,使 問題能夠簡(jiǎn)單化,不用再判斷當(dāng)前點(diǎn)的試探方向有兒個(gè)。2. 設(shè)計(jì)方案2.1問題分析和任務(wù)定義:中國(guó)彖棋屮馬采用“口”字走法,對(duì)棋盤上馬所在的結(jié)點(diǎn),一步內(nèi)到達(dá)的結(jié)點(diǎn)最多有 八個(gè),即假設(shè)馬所在點(diǎn)的坐標(biāo)為(i, j),那么其它八個(gè)結(jié)點(diǎn)的坐標(biāo)為(i+l,j+2),(i+2,j+l), (i+2,jl) , (i+l,j2), (i-l,j-2) , (i2,jl) , (i2,j+l) , (i-l,j+2)把這些點(diǎn)看作馬所在點(diǎn)的鄰接點(diǎn),所

6、以可以采用類似圖的深度優(yōu)先遍歷,以馬所在點(diǎn)為初始點(diǎn)對(duì)整個(gè)棋 盤進(jìn)行遍歷。然后按遍歷的順序輸岀結(jié)點(diǎn) 可以用一個(gè)二維數(shù)組chess來表示棋盤, 一開始用來存放步驟號(hào),若走過了則把它賦值為0。 對(duì)于動(dòng)態(tài)演示問題,只要在“馬” 的位置顯示“馬”,已經(jīng)走過的位置顯示“ ”,未走過的位置顯示“廠” “ 丁” “ -i ” “卜”等制表符,然后清屏,顯示下一步,再清屏,依次類推。棋盤的規(guī)格限制在20*20 以內(nèi),起始點(diǎn)當(dāng)然不能超出棋盤的范圍,每輸入一組數(shù)據(jù),首先判斷是否可以全部走完, 如果可以,則動(dòng)態(tài)演示,否則重新輸入數(shù)據(jù)。2. 2概要設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)的選擇:該算法需要定義一個(gè)二維數(shù)組chess用來表示棋盤,

7、整形變量step存放步驟號(hào), count存放運(yùn)算次數(shù)。 定義8個(gè)函數(shù)(fl,f2,f3,f4,f5,f6,f7,用來表示按8種規(guī)則走,定 義一個(gè)h函數(shù)用來統(tǒng)計(jì)8種規(guī)則中有幾種是可走的,再定義一個(gè)test函數(shù)用來測(cè)試是否 可以走完,如果可以走完則返回值為1,否則返回0o test函數(shù)和fl,f2,f3,f4,f5,f6,f7,f8 八個(gè)函數(shù)是一個(gè)遞歸調(diào)用關(guān)系。然后通過主函數(shù)調(diào)用test函數(shù),實(shí)現(xiàn)動(dòng)態(tài)演示功能。具 體過程見下圖:3. 方案實(shí)施3.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):同上面述,棋盤采用數(shù)組形式,并且這里的數(shù)組比棋盤的數(shù)組規(guī)模稍人,因?yàn)?為了判斷的方便,這里在棋盤周圍個(gè)加了兩層“墻”。具體數(shù)據(jù)結(jié)構(gòu)定義如下

8、:int chess2323/* chess 23 23用來表示棋盤;int fl (int x, int y), f2(int x, int y),f3(int x, int y), f4(int x, inty), f5 (int x, int y), f6 (int x, int y), f7 (int x, int y), f8 (int x, int y);/*中明函數(shù),這些函數(shù)就是用來表示八種走的規(guī)則*/int h(int x, int y)/*h函數(shù)用來測(cè)試(x, y)位置處,下一步可以跳的位置數(shù),返回值為sum*/ int sum; /*用來記錄下一步可以跳的位置數(shù)*/sum二

9、0;if (chessxly-2=0)sum+;if (chessx-2y+l=o)sum+;if (chess x+2 y+l=o)sum+;if(chessx+2y-1二二0)sum+;if (chessx-2 yt二二0)sum+;if (chessxly+2=0)sum+;if (chessx+ly-2=0)sum+;if (chess x+l y+2=0)sum+;return (sum);/*每找到一個(gè)位置sum+,最后返回sum值就是在(x, y)處可走的位置數(shù)*/3. 2功能函數(shù)設(shè)計(jì):(1)測(cè)試函數(shù)模塊 int test(int x,int y)/*test函數(shù)測(cè)試第step步

10、為(x,y)位置的情況下,是否可以走完棋盤,如果可以返回1,否則返 回0*/(2)主函數(shù):void main()進(jìn)入主函數(shù)后提示用戶輸入棋盤大小,只能輸入小于23的數(shù),其他的數(shù)字則提示輸入錯(cuò)誤,重 新輸入。然后提示輸入起點(diǎn)位置,這里的起點(diǎn)位置就是日常生活觀念屮的順序,開始點(diǎn)是(1,1),而不 是數(shù)組中的初始位置(0,0),輸入錯(cuò)誤則提示重新輸入。3. 3編碼實(shí)現(xiàn):jtincludc <stdio. h>itinclude <iostream>int chess2323,step=0, m=0, n=0, count二0;/* chess23 23用來表示棋盤;step是

11、步驟數(shù);m和n是棋盤的規(guī)格行和列;count是運(yùn)算次數(shù);*/int fl(int x, int y), f2 (int x, int y), f3(int x, int y), f4(int x, int y), f5(int x, int y), f6 (int x, int y), f7 (int x, int y), f8 (int x, int y);/*申明函數(shù),這些函數(shù)就是用來表示八種走的規(guī)則*/int h (int x, int y)/*h函數(shù)用來測(cè)試(x, y)位置處,下一步可以跳的位置數(shù),返冋值為sum*/ int sum; /*用來記錄下一步可以跳的位置數(shù)*/sum=0;i

12、f(chessx-1y-2=0)sum+;if (chessx-2y+1二二0)sum+;if (chessx+2y+l=0)sum+;if (chessx+2y-l=0)sum+;if (chess x-2 yt=0)suin+;if (chess xt y+2二二0)sum+;if (chess x+1 y-2=0)sum+;if (chessx+1y+2=0)suin+;return(sum);/*每找到一個(gè)位置sum+,最后返回sum值就是在(x, y)處可走的位置數(shù)*/int test (int x, int y) atest函數(shù)測(cè)試第step步為(x, y)位置的情況下,是 否可以

13、走完棋盤,如果可以返回1,否則返回0*/int s9, a9;int min, i, j, k;count+;step+;chessxy二step;if (stcp=m*n)return(1) ; /*如果已經(jīng)走到了 mxn的話,表示滿足結(jié)束條件,返冋1 */sl二h(x-2, y+1) ;/*統(tǒng)計(jì)(x, y)處的下一步的八個(gè)位置的sum值*/ s2=h(x-l,y+2);s3二 h(x+l,y+2);s4二 h(x+2, y+1);s5二h(x+2, y-1);s =h (x+1, y-2);s7=h(x-1, y-2);s =h (x-2, y-1);for(j=l; j<=8; j

14、+)/*使用冒泡排序,對(duì)下一步的八個(gè)規(guī)則的sum從小到大排序*/min=9;aj=l;for(i=l;i<=8;i+)if (sim in)min=si;aj=i; /*排序結(jié)果存放在er數(shù)組中*/k二 i;sk=9; for (i=l; i<=8; i+)/*這個(gè)循環(huán)按sum從小到大的順序依次調(diào)用相應(yīng)的規(guī)則*/if (ai二二 1)if (fl (x, y)=l)return(l);if (ai=2)if(f2(x, y)二二 1)return (1);if (ai=3)if (f3(x, y)=l)rcturn(l);if (ai=4)if (f4(x, y)二二 1)retu

15、rn (1);辻(ai=5)if(f5 (x, y)=l)return (1);if (ai=6)if (f6 (x, y) =1)return (1);if(ai=7)if(f7(x, y)=l) return (1);if (ai=8)if(f8 (x, y)=l) return (1);)step一一;/*如果按任意八個(gè)規(guī)則都無法走滿棋盤則回退,*/ chessxy二0;/*把棋盤恢復(fù)狀態(tài),并返回0*/return (0);/*按規(guī)則1走步*/int fl (int x, int y)if (chessx2y+l=0)if(test(x2, y+1)二二1)return (1);retu

16、rn (0);/*按規(guī)則2走步*/int f2(int x, int y)if (chess xt y+2=0)if(test(xl, y+2)二二1)return (1);return (0);/*按規(guī)則3走步*/ int f3 (int x, int y)if (chessx+1y+2=0)if (test (x+1, y+2)=l) return(l);return (0);/*按規(guī)則4走步*/int f4(int x, int y)if (chessx+2y+l=0)if (test(x+2, y+1)二二1) return(1);return (0);/*按規(guī)則5走步*/int f5

17、(int x, int y)if (chess x+2 yt=0)if (test (x+2, yt) = l) return (1);return (0);/*按規(guī)則6走步*/int f6(int x, int y)if (chessx+1y2=0)if (test (x+1, y-2)=l)return(l);return (0);/*按規(guī)則7走步*/int f7(int x, int y)if (chessxt y-2二二0)if (test (x-1, y-2) = 1) return仃);return(0);/*按規(guī)則8走步*/int f8 (int x, int y)if(ches

18、sx-2y-1二二0)if (test (x-2, y-l)=l) return (1);return (0);void main()int i, j, xo, yo, q=0, cou;while (q=0)system(cls);printf(,zn歡迎使用馬踏棋盤演示系統(tǒng));printf (,znn按回車鍵進(jìn)入演示系統(tǒng)nnnn");gctchar ();歡迎使用馬踏棋盤演system(cls); printf (n示系統(tǒng)n);for(i=0;i<23;i+)/*初始化棋盤大小*/for(j=0;j<23;j+)chessij=-l;printfcn輸入棋盤行數(shù):);

19、seanf&m);printf (,zn輸入棋盤列數(shù):); scanf (,z%d,z, &n) ;/*輸入目標(biāo)棋盤的大小*/for(i=2;i<=m+l;i+)for(j=2;j<=n+l;j+)chessij二0;printf ("n起始點(diǎn)行坐標(biāo):");scanf ("%ct, &x0);printf (,zn起始點(diǎn)列坐標(biāo):);scanf(%d,&y0) ;/* 取得初始位置 */if (x0>二 1&&x0二m)&&(y0>二l&&y0二n) /* 判斷輸

20、入是否有效*/iif (test (xo+1, y0+l)=l)/*測(cè)試是否可以走完,如果可以則回車,動(dòng)態(tài)演示; 否則退出,重新輸入*/printf(z,n可以全部走完,過程按回車鍵演示過程=>);getchar ();for (cou=l; cou<=count; cou+) /*動(dòng)態(tài)顯示行走過程,每回車一次,顯示下一 步馬的位置*/getchar ();system(cls);printf (,zn歡迎使用馬踏棋盤演示系統(tǒng));printf (z,正在為您演示?rt);printf (第d 步:,cou);for (i=2;i<=m+l;i+)printf (rt);for

21、(j=2;j<=n+l;j+)if (chessij二二0)printf ;/*如果該點(diǎn)已經(jīng)走過,就在這點(diǎn)打印*/ else if (cou=chessi j)printf (馬);/*如果在這一步馬在該點(diǎn),則在這點(diǎn)打印馬chessij=0;elseif (i 二二 2&&j=2) printf (,z 廠");if(i=2&&j>2&&j<n+l)printf ct");if (i二二2&&j二二n+1)printf(-1 );if(i>2&&im+l&&

22、;j=2)printf ( 卜);if (i=m+l&&j=2)printf (“ l,/);if(i=m+l&&j>2&&j<n+l)printf ("丄“);if(i=m+l&&j二二n+1)printf("“);if(i>2&&im+l&&j二二n+1)printf ch “);if(i2&&im+l&&j>2&&jn+l)printf (,+,/) ;/*打印棋盤*/if (cou<m*n)pr

23、intf (,zn按回車鍵演示下一步);elseprintf (,zn演示完畢!按任意鍵退出.n);q二 1;elseprintf (,zn無法全部走完!按回車鍵重新輸入! n);get char ();getchar ();count二0;el seprintf (,zn輸入錯(cuò)誤!超過范圍! n);printf (,zn按回車鍵重新輸入! n);get char ();get char ();4.1輸入初始數(shù)據(jù)4.結(jié)果與結(jié)論4. 2判斷能否遍歷wc:usersadministratordesktopdebugcppl.exefamb不系統(tǒng)-ia歡迎使用馬踏棋盤演輸入棋盤行數(shù):10打入棋盤列數(shù)

24、江0起始點(diǎn)行坐標(biāo)江起始點(diǎn)列坐標(biāo)江可以全部走完,過程按回車鍵演示過程=>4. 3動(dòng)態(tài)演示5 收獲與致謝這次課程設(shè)計(jì),讓我更加深刻了解數(shù)據(jù)結(jié)構(gòu)里的優(yōu)先深度遍歷和回溯法,對(duì)數(shù)據(jù)結(jié) 構(gòu)的應(yīng)用有了一定的提高,在設(shè)計(jì)過程中遇到一些思路上的困擾,但是通過老師同學(xué)的 幫助,都成功一一克服。這次的課程設(shè)計(jì)給我相當(dāng)?shù)幕A(chǔ)知識(shí),為我以后工作打下了嚴(yán) 實(shí)的基礎(chǔ)。再次感謝小組同學(xué)的辛勤付出,以及老師的無私幫助6.參考文獻(xiàn)1. c程序設(shè)計(jì)(第四版),譚浩強(qiáng)清華大學(xué)出版社2. 數(shù)據(jù)結(jié)構(gòu)(c語言版),嚴(yán)蔚敏吳偉民清華大學(xué)出版社指導(dǎo)教師評(píng)語:1、課程設(shè)計(jì)報(bào)告:8、內(nèi)谷:不完整口完整口詳細(xì)口b、方案設(shè)計(jì):較差口合理口非常合

25、理口c、實(shí)現(xiàn):未實(shí)現(xiàn)口部分實(shí)現(xiàn)口全部實(shí)現(xiàn)口d、文檔格式:不規(guī)范口基木規(guī)范口規(guī)范口2、出勤:全勤口缺勤次3、答辯:a、未能完全理解題目,答辯情況較差 口b、部分理解題目,部分問題回答正確口c、理解題目較清楚,問題回答基本正確口d、理解題目透徹,問題回答流利口課程設(shè)計(jì)報(bào)告成績(jī):,占總成績(jī)比例:50%課程設(shè)計(jì)其它環(huán)節(jié)成績(jī):環(huán)節(jié)名稱:出勤,成績(jī): ,占總成績(jī)比例:20%環(huán)節(jié)名稱:答辯,成績(jī): ,占總成績(jī)比例:30%總成績(jī):指導(dǎo)教師簽字:年 月 日7 附件源程序:ttinclude <stdio.h>tiincludc <iostrceiniint chess2323,step=o,m

26、=0,n=0,count=0;/* chess2323用來表示棋盤;step是步驟數(shù);m和n是棋盤的規(guī)格行和列;count是運(yùn)算次數(shù);*/x, int y), f5 (int返回值為sum */int fl (int x, int y), f2(int x, int y), f3(int x, int y), f4(int x, int y), f6(int x, int y), f7 (int x, int y), f8 (int x, int y);/*中明函數(shù),這些函數(shù)就是用來表示八種走的規(guī)則*/int h(int x, int y)/*h函數(shù)用來測(cè)試(x, y)位置處,下一步可以跳的位

27、置數(shù), int sum; /*用來記錄下一步可以跳的位置數(shù)*/sum二0;if (chessx-1y-2=0)sum+;if (chessx-2y+l=0)sum+;if (chessx+2 y+l=0)suin+;if(chessx+2y-1二二0)sum+;if (chessx-2 yt二二0)sum+;if (chessx-1y+2=0)sum+;if (chessx+1y-2=0)sum+;if (chess x+1 y+2=0)sum+;return (sum);/*每找到一個(gè)位置sum+,最后返回sum值就是在(x, y)處可走的位置數(shù)*/int test (int x, int

28、y) /*test函數(shù)測(cè)試第step步為(x, y)位置的情況下,是 否可以走完棋盤,如果可以返回1,否則返回0*/int s9, a9;int min, i, j, k;count+;step+;chessxy=step;if (step二二m*n)return(1) ; /*如果已經(jīng)走到了 mxn的話,表示滿足結(jié)束條件,返回1 */s=h (x-2, y+1) ;/*統(tǒng)計(jì)(x, y)處的下一步的八個(gè)位置的sum值*/ s2=h (x-1, y+2);s3=h(x+l,y+2);s4二h(x+2, y+1);s5二h(x+2, y-1);s6二h(x+l, y-2);s7=h (x-1, y

29、-2);s8=h(x-2, y-1);for(j=l; j二8; j+)/*使用冒泡排序,對(duì)下一步的八個(gè)規(guī)則的sum從小到大排序*/min=9;aj=l;for(i=l;i<=8;i+)if (simin)min=si;aj=i ; /*排序結(jié)果存放在a數(shù)組中*/k=i;sk二9; for (i=l; i<=8; i+)/*這個(gè)循環(huán)按sum從小到大的順序依次調(diào)用相應(yīng)的規(guī)則*/if (ai二二 1)if(fl(x, y)=l)return(l);辻(ai=2)if(f2(x, y)=l)return (1);if (ai=3)if (f3 (x, y)=l)return(l);if

30、(ai=4)if (f4(x, y)二二 1)return ;if (ai=5)if(f5 (x, y)=l)return (1);if (ai=6) if(f6(x, y)二二 1)return (1);辻(ai=7)if(f7 (x, y)=l) return (1);if (ai二二 8)if (f8 (x, y)=l) return (1);step-一;/*如果按任意八個(gè)規(guī)則都無法走滿棋盤則回退,*/ chesstx y=0;/*把棋盤恢復(fù)狀態(tài),并返回0*/return(0);/*按規(guī)則1走步*/int fl(int x, int y)if(chessx-2y+1二二0)if (te

31、st (x-2, y+l)=l)return (1);return (0);/*按規(guī)則2走步*/int f2(int x, int y)if (chessx-1y+2=0) if (test (x-1, y+2)=l) return (1);return (0);/*按規(guī)則3走步*/int f3(int x, int y)if (chessx+1y+2=0) if (test (x+1, y+2)=l) return (1); return (0);/*按規(guī)則4走步*/int f4(int x, int y)if (chess x+2 y+l=0) if(test(x+2, y+1)二二1)

32、return (1);return (0);/*按規(guī)則5走步*/int f5(int x, int y)if(chessx+2y-l=0) if (test (x+2, y-l)=l) return (1);return (0);/*按規(guī)則6走步*/int f6(int x, int y)if (chessx+l y-2=0) if (test (x+1, y-2)=l)return (1);return(o);/*按規(guī)則7走步*/int f7 (int x, int y)if (chessx-1y-2=o)if (test (x-1, y-2)=1) return (1);return (0

33、);/*按規(guī)則8走步*/int f8(int x, int y)if (chessx2y-l=o) 辻(test (x-2, y-l)=l) rcturn(l);return (0);void main()int i, j, xo, yo, q二0, cou;while(q二二0)system(,zcls,z);printf(,zn歡迎使用馬踏棋盤演示系統(tǒng)n);printf (,znn按冋車鍵進(jìn)入演示系統(tǒng)nnnrt);get char (); systcm(cls);printf(z,n歡迎使用馬踏棋盤演示系統(tǒng)n);for (i二0; i23; i+)/*初始化棋盤大小*/for(j=0;j<23;j+)chessij=-l;printfcan輸入棋盤行數(shù):);scanf(d,&m);printf cn輸入棋盤列數(shù):); scanf (ct, &n) ;/*輸入目標(biāo)棋盤的大小*/for(i=2;i<=m+l;i+)for(j=2;j<=n+l;j+)chessij二0;printf cn起始點(diǎn)行坐標(biāo):);scanf (ct, &x0);printf cn起始點(diǎn)列坐標(biāo):);scanf (d, &y0) ;/* 取得初始位置 */if (x0>=l&&x0<=m)&am

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論