SHUOJ 1724 單側跳馬問題(BFS)

2021-07-09 21:27:15 字數 1517 閱讀 7112

題目:shuoj 1724

題目:

time limit: 1 sec  

memory limit: 128 mb

submit: 51  

solved: 32 [

submit][

status][

web board]

給定m*

n棋盤,求棋盤上乙隻馬從乙個位置(a,b)到達(c,d)位置的最短路徑長。

注意在本問題中馬只能向右側走「日」字形的,但馬不能向所在位置的左邊走「日」字形。

輸入有若干測試資料。

每組測試資料有二行,第一行上有2個正整數m、n,表示乙個m´

n棋盤,(1

<=m,n

<=20

);第二行上有4個整數a、b、c、d,之間用乙個空格隔開,(a,b)表示棋盤上的馬開始的行與列座標,(c,d)表示到達的行與列座標,(1<=a,c

<=m,1

<=b,d

<=

n)。輸入直到檔案結束。

對輸入中的每組測試資料,如果馬能從位置(a,b)到達(c,d),那麼輸出馬從位置(a,b)跳到位置(c,d)所需的最短路徑長;如果不能跳到,那麼直接輸出「impossible」。

8 8

5 5 8 8

15 19

1 6 9 18

10 6

1 1 10 62

8 impossible

依舊是bfs,不廢話,看**。

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

const int maxn=10005;

int map[25][25];

int dir[4][2]=,,,};

int m,n,a,b,c,d;

struct t;

t sa,sb;

int bfs(int x,int y){

queueq;

sa.x=x;

sa.y=y;

map[x][y]=0;

q.push(sa);

while(!q.empty()){

sa=q.front();

q.pop();

for(int i=0;i<4;i++){

int xx=sa.x+dir[i][0];

int yy=sa.y+dir[i][1];

if(xx<=m && xx>=0 && yy<=n&& yy>=0){

sb.x=xx;

sb.y=yy;

if(map[sa.x][sa.y]+1>m>>n){

for(int i=0;i<=m;i++)

for(int j=0;j<=n;j++)

map[i][j]=maxn;

cin>>a>>b>>c>>d;

bfs(a,b);

if(map[c][d]==maxn){

cout<<"impossible"<

好好學習~~~

SHUOJ幾隊周尼瑪

超級無敵張小豪是a國的一名勇士,a國的勇士都要靠獲得能量變得更強,在a國勇士獲得能量只有唯一的一種途徑就是膜拜宙斯神 周尼瑪 桑!要膜拜周尼瑪就要去到遙遠的大日國那裡有好多好多周尼瑪 桑!但是周尼瑪 桑!是一種群居動物,一隊周尼瑪 桑!中都有且只有乙個領袖叫周尼瑪你妹 桑!超級無敵張小豪勇士必須拿著...

SHUOJ新增好友

tony最近喜歡上了龍之谷遊戲,所以他想叫上他的好友組建乙個公會來一起享受這款遊戲。tony一共有n個好友,他可以叫上任意k 1 k n 個好友來組建公會,並且所有好友都會答應他的請求。問tony一共可以有多少種方案組建這個公會?只要不是完全相同的人組建的方案視為不同方案,並且tony至少要叫上乙個...

1 7 2 4 作為注釋的開始

標準sql使用c語法 this is a comment 進行注釋,而mysql server也支援該語法。mysql還支援對此語法的擴充套件,如 第9.6節 注釋語法 中 所述,該擴充套件使特定於mysql的sql能夠嵌入到注釋中 標準sql使用 作為開始注釋序列。mysql server 用作開...