將馬隨機放在西洋棋的8×8棋盤board[0~7][0~7]的某個方格中,馬按走棋規則進行移動。要求每個方格只進入一次,走遍棋盤上全部64個方格。
/*
馬踏棋盤問題
思路:用深度優先遍歷+回溯法
1,初始化乙個8*8的矩陣,元素都為1
2,設定馬的起始位置(x,y),對走過的節點做標記
3,對起始位置的下個一位置的8種可能,做迴圈操作,若沒有路可走(也就是一條路走到頭,發現返回結果為false),則開始進行回溯
4,在迴圈到的節點重複步驟2,3(也就是迴圈中用遞迴)。
要找到可能的線路,而不是簡單的遍歷所有,不能用廣度優先遍歷
*/class horseonchessboard}}
static
int step1=;
static
int step2=;
public
static
boolean
check(int x,int y)
public
static
boolean
dfs(int x,int y,int step)
for(int i=0;i<8;i++)
}return
false;
}public
static
void
print()
system.out.println("");}}
public
static
void
main(string args)
}
57 52 45 38 47 50 35 64
44 39 56 51 36 63 48 1
53 58 37 46 49 2 31 34
40 43 60 55 32 29 62 3
59 54 41 28 61 4 33 30
42 27 16 19 22 11 8 5
17 20 25 14 9 6 23 12
26 15 18 21 24 13 10 7
true
馬踏棋盤演算法
為.c檔案 include include include define rows 8 define cols 8 int cheesboard rows cols const int movex 8 const int movey 8 初始化棋盤,將棋盤所有的位置賦值為0 void initboa...
馬踏棋盤演算法
將馬隨機放在西洋棋的board 0 7 0 7 的某個方格中,馬按走棋規則進行移動。走遍棋盤上全部64個方格。編制非遞迴程式,求出馬的行走路線,並按求出的行走路線,將數字1,2,64依次填入乙個8 8的方陣,輸出之。利用回溯法的思想,馬的走法總共有8,c 8 b 8 c是橫座標,b是縱座標。總共有6...
馬踏棋盤演算法
在乙個8 8象棋棋盤中,定義馬的起始位置,如何讓馬踏遍整個棋盤 使用遞迴求解,從起始位置開始,往其四周可去的點行走,走到之後,再以到達點為起始點再向四周可去點走,直到走完 include includeusing namespace std define wei 8 定義棋盤維度 typedef s...