馬踏棋盤演算法

2021-07-24 00:23:49 字數 1500 閱讀 9997

**為.c檔案

# include 

# include

# include

# define rows 8

# define cols 8

int cheesboard [rows] [cols];

const

int movex [8] = ;

const

int movey [8] = ;

//初始化棋盤,將棋盤所有的位置賦值為0

void initboard (int board[cols])

}}//從待選的下乙個點的集合中路徑最短的乙個

int getminpath (int a,int num)

}for(i = index + 1; i < num ; i++)

}if(a[index] > 0)

return index;

return -1;

}// 列印路徑

void printpath (int board[cols])

printf("\n\n");

}}// 獲得馬行走的路徑

void getpath (int board [cols], int startx, int starty);

//下乙個位置的在二維陣列中對應位置,初始為0

int nextx[8] = ;

int nexty[8] = ;

//第乙個位置賦值為1

board [startx] [starty] = 1;

int m,i,j;

//走完所有的點要迴圈63次

for ( m = 1; m < 64; m++)

//如果可以向下乙個位置移動的話,通過next陣列儲存下來,通過next記錄下有多少個

nextx [next] = startx + movex[i];

nexty [next] = starty + movey[i];

next ++;

}//迴圈結束之後,對next的值進行判斷,當為1的時候

if (next == 1)

//無法向下乙個位置移動了

else

if (next == 0)

else

}nextnum[i] = nextnext;

}if ((min = getminpath(nextnum,next))>=0 )

else

}set_nextpoint:

startx = nextx[min];

starty = nexty[min];

board[startx][starty] = m+1;

}print_path:

printpath(board);

}int main ()

執行結果:

馬踏棋盤演算法

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

用java寫的馬踏棋盤演算法

將馬隨機放在西洋棋的8 8棋盤board 0 7 0 7 的某個方格中,馬按走棋規則進行移動。要求每個方格只進入一次,走遍棋盤上全部64個方格。馬踏棋盤問題 思路 用深度優先遍歷 回溯法 1,初始化乙個8 8的矩陣,元素都為1 2,設定馬的起始位置 x,y 對走過的節點做標記 3,對起始位置的下個一...