專題一搜尋 B Knight Moves

2022-09-19 11:57:14 字數 1239 閱讀 2628

題目描述

原題來自:poj 1915

編寫乙個程式,計算乙個騎士從棋盤上的乙個格仔到另乙個格仔所需的最小步數。騎士一步可以移動到的位置由下圖給出。

輸入格式

第一行給出騎士的數量 nn。

在接下來的 3n3n 行中,每 33 行描述了乙個騎士。其中,

輸出格式

對每乙個騎士,輸出一行乙個整數表示需要移動的最小步數。如果起始點和終點相同,則輸出 00。

樣例input

output

3

80 0

7 0100

0 030 50

101 1

1 1

5

280

資料範圍與提示

對於 100\%100% 的資料,有 4\le l\le 3004≤l≤300,保證 0\le x,y\le l-10≤x,y≤l−1。

思路廣搜樣板題,不細說了

**

#include#include#include#include#includeusing namespace std;

int t,n,sx,sy,ex,ey,nx,ny;

int vis[333][333];

int step[333][333];

int main()

if(nx-2>=0&&ny+1<=n&&vis[nx-2][ny+1]==0)

if(nx-2>=0&&ny-1>=0&&vis[nx-2][ny-1]==0)

if(nx-1>=0&&ny+2<=n&&vis[nx-1][ny+2]==0)

if(nx-1>=0&&ny-2>=0&&vis[nx-1][ny-2]==0)

if(nx+1<=n&&ny+2<=n&&vis[nx+1][ny+2]==0)

if(nx+2<=n&&ny+1<=n&&vis[nx+2][ny+1]==0)

if(nx+2<=n&&ny-1>=0&&vis[nx+2][ny-1]==0)

if(nx+1<=n&&ny-2>=0&&vis[nx+1][ny-2]==0)

}memset(vis,0,sizeof(vis));

printf("%d\n",step[ex][ey]);

} return 0;

}

專題一 簡單搜尋

我就是乙個智障,總是把變數弄錯,導致浪費了很多時間 用簡單的回溯法,就可以暴力破解 我的 includeusing namespace std const int maxn 9 bool col maxn char qipan maxn maxn int n,maxk int ans 0 bool ...

kuangbin專題一 簡單搜尋

poj 1426 找出乙個由1和0組成的十進位制數m滿足m為n的倍數。有兩種做法,一種是bfs從低位數往高位數搜,另一種是用二叉樹陣列的結構存每次的求出來的餘數,當餘數為0時返回下標,然後根據下標求出其對應的數。1.bfs include includeusing namespace std con...

kuangbin專題一簡單搜尋總結

e find the multiple 題意 找乙個能整除n的數m,對m的要求是只有0和1組成。n不超過200,m長度不超過100.思路 很多人都寫了乙個假演算法,就是在unsigned long long 的範圍裡面找就行了,雖然也a了,但博主想在這裡提一下正確的思路。首先用到了同餘定理 即以任意...