騎士旅行(BFS)

2021-10-01 07:35:00 字數 1023 閱讀 5919

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分析

這題我們可以用廣搜(bfs)

我們可以逐步求出到每乙個點的最少移動次數,然後目標位置的值就是從(1,1)到(i,j)的最少移動次數

ac**

#include

using

namespace std;

int dx[9]

=;//8個方向延伸

int dy[9]

=;int n,m,x1,y1,num,head,tail,st[

2505][

4],a[1005][

1005];

bool

check

(int x,

int y)

//判斷邊界和是否踩過

void

bfs()}

}while

(head<=tail);}

intmain()

騎士旅行 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 ...

BFS 騎士旅行

description 在乙個n m 格仔的棋盤上,有乙隻西洋棋的騎士在棋盤的左下角 1 1 如圖1 騎士只能根據象棋的規則進行移動,要麼橫向跳動一格縱向跳動兩格,要麼縱向跳動一格橫向跳動兩格。例如,n 4,m 3 時,若騎士在格仔 2 1 如圖2 則騎士只能移入下面格仔 1 3 3 3 或 4 2...