馬踏棋盤演算法

2021-08-09 10:50:40 字數 852 閱讀 2453

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