> description
在乙個n m 格仔的棋盤上,有乙隻西洋棋的騎士在棋盤的左下角 (1;1)(如圖1),騎士只能根據象棋的規則進行移動,要麼橫向跳動一格縱向跳動兩格,要麼縱向跳動一格橫向跳動兩格。 例如, n=4,m=3 時,若騎士在格仔(2;1) (如圖2), 則騎士只能移入下面格仔:(1;3),(3;3) 或 (4;2);對於給定正整數n,m,i,j值 (m,n<=50,i<=n,j<=m) ,你要測算出從初始位置(1;1) 到格仔(i;j)最少需要多少次移動。如果不可能到達目標位置,則輸出"never"。
輸入檔案的第一行為兩個整數n與m,第二行為兩個整數i與j。
> output
輸出檔案僅包含乙個整數為初始位置(1;1) 到格仔(i;j)最少移動次數。
> sample input
5 31 2
> sample output
3> 解題思路
這一題其實跟電子老鼠闖迷宮電子老鼠闖迷宮有點像,都是十分基礎的廣搜,只是這一道題的路線不同,而且原本沒有障礙,也不用把路線的過程輸出來。
> **
#include
#include
#include
using namespace std;
const int d1[8]
=;const int d2[8]
=;const int maxn=51;
int a[maxn]
[maxn]
=,f[maxn*maxn];
int s[maxn*maxn][3
];int n,m,n2,m2,len=0;
bool aka
(int q1,int q2)
void
ooo(int n)
void
lil()if
(s[t][1
]==n2&&s[t][2
]==m2)}}
while
(h<=t);}
int main()
騎士旅行 bfs
題目描述 description 在乙個n m 格仔的棋盤上,有乙隻西洋棋的騎士在棋盤的左下角 1 1 如圖1 騎士只能根據象棋的規則進行移動,要麼橫向跳動一格縱向跳動兩格,要麼縱向跳動一格橫向跳動兩格。例如,n 4,m 3 時,若騎士在格仔 2 1 如圖2 則騎士只能移入下面格仔 1 3 3 3 ...
騎士旅行(BFS)
description 在乙個n m 格仔的棋盤上,有乙隻西洋棋的騎士在棋盤的左下角 1 1 如圖1 騎士只能根據象棋的規則進行移動,要麼橫向跳動一格縱向跳動兩格,要麼縱向跳動一格橫向跳動兩格。例如,n 4,m 3 時,若騎士在格仔 2 1 如圖2 則騎士只能移入下面格仔 1 3 3 3 或 4 2...
BFS 騎士旅行
description 在乙個n m 格仔的棋盤上,有乙隻西洋棋的騎士在棋盤的左下角 1 1 如圖1 騎士只能根據象棋的規則進行移動,要麼橫向跳動一格縱向跳動兩格,要麼縱向跳動一格橫向跳動兩格。例如,n 4,m 3 時,若騎士在格仔 2 1 如圖2 則騎士只能移入下面格仔 1 3 3 3 或 4 2...