騎士旅行 BFS

2021-08-28 02:26:13 字數 1234 閱讀 3563

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