馬踏棋盤(簡單廣搜)

2021-06-22 18:19:21 字數 1102 閱讀 5875

49557

[nwpu][2014][trn][4]搜尋c題

題目:給定乙個8*8的棋盤,然後給定棋子馬的初始位置和目標位置,求算出從初始位置到目標位置,所需要的最短步數。

**:

#include #include using namespace std;

int main()

h=wh0.first+1;w=wh0.second-'a'+2;

if(h>=0&&h<8&&w<8&&w>=0&&a[h][w]==0&&(w!=w0-'a'||h!=h0))

h=wh0.first-2;w=wh0.second-'a'-1;

if(h>=0&&h<8&&w<8&&w>=0&&a[h][w]==0&&(w!=w0-'a'||h!=h0))

h=wh0.first-1;w=wh0.second-'a'-2;

if(h>=0&&h<8&&w<8&&w>=0&&a[h][w]==0&&(w!=w0-'a'||h!=h0))

h=wh0.first+2;w=wh0.second-'a'-1;

if(h>=0&&h<8&&w<8&&w>=0&&a[h][w]==0&&(w!=w0-'a'||h!=h0))

h=wh0.first-2;w=wh0.second-'a'+1;

if(h>=0&&h<8&&w<8&&w>=0&&a[h][w]==0&&(w!=w0-'a'||h!=h0))

h=wh0.first-1;w=wh0.second-'a'+2;

if(h>=0&&h<8&&w<8&&w>=0&&a[h][w]==0&&(w!=w0-'a'||h!=h0))

h=wh0.first+1;w=wh0.second-'a'-2;

if(h>=0&&h<8&&w<8&&w>=0&&a[h][w]==0&&(w!=w0-'a'||h!=h0))

}}return 0;

}

反思:一開始想的太複雜了,就沒有找到頭緒,原因是沒有理解廣搜的特點,後來經過一夜的反思,明白了廣搜找到的就是最短的路徑,然後就直接寫了**,寫**是把判斷條件寫錯了(陣列下標寫錯了一位,寫成了從1開始的下標),並且上述**有點繁瑣,可以用乙個迴圈代替八個方向的判斷。

馬踏棋盤python 馬踏棋盤python實現

import collections import random class checkerboard object 初始化棋盤 def init self,len self.len len self.position has gone set def init checkerboard self ...

回溯演算法(馬踏棋盤)

近期學習了回溯演算法於是自己寫了馬踏棋盤的遞迴以及非遞迴方式的 theme 馬踏棋盤 回溯演算法 coder 秒針的聲音 time 2015.1.11 include include include define m 8 typedef struct nodehorse horse horse1 i...

馬踏棋盤演算法

為.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...