題目描述
原題來自:poj 1915
編寫乙個程式,計算乙個騎士從棋盤上的乙個格仔到另乙個格仔所需的最小步數。騎士一步可以移動到的位置由下圖給出。
輸入格式
第一行給出騎士的數量 nn。
在接下來的 3n3n 行中,每 33 行描述了乙個騎士。其中,
輸出格式
對每乙個騎士,輸出一行乙個整數表示需要移動的最小步數。如果起始點和終點相同,則輸出 00。
樣例input
output
380 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了,但博主想在這裡提一下正確的思路。首先用到了同餘定理 即以任意...