1樓:匿名使用者
此題涉及到貪婪法演算法,它是一種不追求最優解,只希望得到較為滿意解的方法。貪婪法一般可以快速得到滿意的解,因為它省去了為找最優解要窮盡所有可能而必須耗費的大量時間。貪婪法常以當前情況為基礎作最優選擇,而不考慮各種可能的整體情況,所以貪婪法不要回溯。
馬在某個方格,可以在一步內到達的不同位置最多有8個,如用二維陣列board[ ]表示棋盤,其元素記錄馬經過該位置時的步驟號。另對馬的8種可能走法(稱為著法)設定一個順序,如當前位置在棋盤的(i,j)方格,下一個可能的位置依次為(i+2,j+1)、(i+1,j+2)、(i-1,j+2)、(i-2,j+1)、(i-2,j-1)、(i-1,j-2)、(i+1,j-2)、(i+2,j-1),實際可以走的位置盡限於還未走過的和不越出邊界的那些位置。為便於程式的同意處理,可以引入兩個陣列,分別儲存各種可能走法對當前位置的縱橫增量。
馬對於本題,一般可以採用回溯法,這裡採用warnsdoff策略求解,這也是一種貪婪法,其選擇下一出口的貪婪標準是在那些允許走的位置中,選擇出口最少的那個位置。如馬的當前位置(i,j)只有三個出口,他們是位置(i+2,j+1)、(i-2,j+1)和(i-1,j-2),如分別走到這些位置,這三個位置又分別會有不同的出口,假定這三個位置的出口個數分別為,則程式就選擇讓馬走向(i-2,j+1)位置。
由於程式採用的是一種貪婪法,整個找解過程是一直向前,沒有回溯,所以能非常快地找到解。但是,對於某些開始位置,實際上有解,而該演算法不能找到解。對於找不到解的情況,程式只要改變8種可能出口的選擇順序,就能找到解。
改變出口選擇順序,就是改變有相同 出口時的選擇標準。以下程式考慮到這種情況,引入變數start,用於控制8種可能著法的選擇順序。開始時為0,當不能找到解時,就讓start增1,重新找解。
細節以下程式。
程式】 # include
int delta_i[ ]
int delta_j[ ]
int board[8][8];
int exitn(int i,int j,int s,int a[ ]
return count;
int next(int i,int j,int s)
while(step<=64)
for (i=0;i<8;i++)
scanf(「%c」);
2樓:網友
可以!這個問題早就有人研究過了,其中包括尤拉(euler),我可用數字來標出馬的位置,我想你能看懂的,很巧,這些數字剛好排列成一個八階幻方:
50,11,24,63,14,37,26,35,23,62,51,12,25,34,15,38,10,49,64,21,40,13,36,27,61,22, 9,52,33,28,39,16,48, 7,60, 1,20,41,54,29,59, 4,45, 8,53,32,17,42,^6,47, 2,57,44,19,30,55,^3,58, 5,46,31,56,43,18,而且,你能看到他是連續迴圈的,所以,你可在任意點起步,用馬步走遍棋盤!
誰知道c語言「馬的遍歷」問題(在8×8的棋盤上遍歷)共有多少種走法?
3樓:俗人指路
21萬種。難道我的程式錯了!
4樓:匿名使用者
我試了一下6*6的就有26萬個??
順便5*5應該是152個,304個應該是沒有忽略軸對稱的重複解。
在8×8棋盤上,馬能否從左下角的方格出發,不重地走遍棋盤,最後回到起點?若能請找出一條路,若不能,請
5樓:小祈
如將棋盤黑白相間地染色後,棋盤上有32個白格與32個黑格,根據馬的走法可知,馬能否從左下角的方格出發,不復地走遍棋盤,最後回到起點.
如下圖中的走法(按數字的順序走):56
馬步遍歷棋盤問題
貪心演算法馬的遍歷 時間複雜度
6樓:匿名使用者
馬的遍歷還有貪心演算法麼?我沒聽過,說來聽聽?
長見識了,謝謝樓上的!
用c++程式設計:馬步遍歷問題:已知國際象棋棋盤有8×8共64個格子。設計一個程式,使棋子從某位置開始
7樓:緣明思
不要做個伸手黨。思路如下:
二維陣列表示棋盤(0,0)~(7,7)。馬的下一跳範圍。丨x1-x2丨+丨y1-y2丨=3且x1≠x2,y1≠y2,x,y均在棋盤上。
演算法可以用任意一種回溯演算法。
新人 c語言 馬走日 遍歷棋盤的問題 50
中國象棋馬的遍歷問題!
8樓:明石夕霧
可以證明你的題沒有出錯。但是有很多歧義。線路眾多,最好用程式實現。
我已經實現了普通位置的全域性遍歷。而且只有一個線路。總不會每個點都畫一個遍歷圖吧?
9樓:風吹紋動
雖然我不會,但還是要說你一下,這麼難的題,這麼低得分,難為你了,小氣,摳門。
10樓:匿名使用者
很感謝大家的回覆!小弟已經做出來了!題目沒有錯,因為這是我們課程設計的額題目!
馬字開頭的成語,馬字在第二的成語,馬字在第三的成語,馬字在最後的成語
馬到成功 馬不停蹄,萬馬奔騰 一馬當先,千軍萬馬 文獻 圖獻 馬到成功。一馬當先。再不知道了 馬在第三個字的成語是哪些? 1 車水馬龍 ch shu m l ng 詳細釋義 形容車馬來往不斷,非常熱鬧。例 句 這座沿海城市自從被列為經濟開發區之後,車水馬龍,一派繁忙景象。2 蛛絲馬跡 zh s m ...
屬馬能戴貔貅,屬馬的能帶貔貅嗎?屬馬的人適合戴貔貅嗎?
小海愛科學 任何生肖的人都可以佩戴貔貅。貔貅為神獸,馬為十二生肖之動物,神獸跟動物之間是有著本質的區別,並且神獸貔貅是已經超出五行之內的,跟生肖屬相是沒有任何關係的,屬馬的人佩戴貔貅兩者是不相沖的,也是沒有任何關係的,因此屬虎屬馬的人適合戴貔貅嗎這個問題,是可以確定的回答,可以佩戴的,沒有任何關係。...
屬馬的人,馬日出行好嗎,屬馬的在地支馬日適合出行不
你太愚昧了!如果行動都要迷信擇日,那你的人生就徹底完了!天地固有乾坤是不假,但是乾坤大道自有大律作用,非人智可以駕馭。而人是宇宙間最具靈思性的動物,發揮靈思創造性才是人存在的價值。人能改化天物易事是人的靈思機能體現,人不能改化天物易事是宇宙乾坤的大道之力。不用刻意把行動都寄託於天運 小為是不會撼動天...