在乙個8*8象棋棋盤中,定義馬的起始位置,如何讓馬踏遍整個棋盤
使用遞迴求解,從起始位置開始,往其四周可去的點行走,走到之後,再以到達點為起始點再向四周可去點走,直到走完
#include#includeusing namespace std;
#define wei 8//定義棋盤維度
typedef struct point//棋盤上的點
;int qipan[wei][wei] = ;
point pgo[8] = ,,,,,,, };//可行走方向集合
int bu = 0;
void ma(point p)
{ int x = p.x;
int y = p.y;
//if (qipan[x][y] != 0)
//return;
if (qipan[x][y] == 0)
{ bu++;
qipan[x][y] = bu;
cout << "第 " << bu << " 步 ,到了" << x+1 << " ," << y+1 << endl;
for (int i = 0; i < 8; i++)
{ point pp;
pp.x = x + pgo[i].x;
pp.y = y + pgo[i].y;
//if (pp.x < 0 && pp.x >= wei&&pp.y < 0 && pp.y >= wei)
//cout << "ppx " << pp.x << " ppy " << pp.y << "qipan" << qipan[pp.x, pp.y] << endl;
if(pp.x>=0&&pp.x=0&&pp.y
馬踏棋盤演算法
為.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...
用java寫的馬踏棋盤演算法
將馬隨機放在西洋棋的8 8棋盤board 0 7 0 7 的某個方格中,馬按走棋規則進行移動。要求每個方格只進入一次,走遍棋盤上全部64個方格。馬踏棋盤問題 思路 用深度優先遍歷 回溯法 1,初始化乙個8 8的矩陣,元素都為1 2,設定馬的起始位置 x,y 對走過的節點做標記 3,對起始位置的下個一...