**為.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,對起始位置的下個一...