用java寫的馬踏棋盤演算法

2021-07-13 19:19:35 字數 1073 閱讀 7177

將馬隨機放在西洋棋的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...