NYOJ284坦克大戰

2021-07-11 02:52:33 字數 821 閱讀 3875

bfs求最短路,這個題走到『b』點是要花費2個時間,'e『是1個時間,所以要用乙個優先佇列,優先順序就是花費小的先出隊,其餘的就是模板了。

**:

#include #include #include using namespace std;

#define inf 0x3f3f3f3f

int stx,sty;

int enx,eny;

int n,m;

int v[305][305];

typedef struct p

node;

struct cmp

};int dx = ;

int dy = ;

char s[305][305];

priority_queue,cmp> pq;

int flag;

int bfs()

if(t.x < 0 || t.x > n - 1 || t.y < 0 || t.y > m - 1 ||s[t.x][t.y] == 'r'|| s[t.x][t.y] == 's')

continue;

if(!v[t.x][t.y])}}

return -1;

}void clear()

int main()

else if(s[i][j] == 't')

}//printf("%d %d %d %d\n",stx,sty,enx,eny);

printf("%d\n",bfs());

clear(); // 一定要有這個,否則wa

}return 0;

}

坦克大戰(nyoj284)

題目大體意思就是,求從地圖上的y走到t的最小步數,其中s和r不能走,b要走兩步,e要走一步。測試輸入 3 4 ybeb eere sste 0 0測試輸出 8 這個題要用優先佇列,不用的話沒有辦法保證所求的步數是最小的。我也查了一些關於優先佇列的資料,做以下整理 在優先佇列中,優先順序高的元素先出佇...

NYOJ 284 坦克大戰(BFS)

好累啊,寫篇部落格歇歇。題目背景很有趣,是大家小時候經常玩的坦克大戰,哈哈。弱弱地表示本人小時候經常玩遊戲機。此題是在迷宮問題的基礎上做了些改動,就是地圖上能走的點可能耗費時間1,也可能耗費時間2。那麼,元素在出佇列時,不能簡單的按照以前的入隊順序出隊了,而應該讓時間最短的先出隊,這樣就能夠保證先入...

nyoj284 坦克大戰 搜尋 bfs

樣例輸入 3 4ybeb eere sste 0 0樣例輸出 8 題意 從y字母的位置到t字母的位置最少trun了幾次 遇到r,s不能走,遇到b的話要turn 2次。坑點在必須用優先佇列,hiphop man 為什麼?真的不知道 不喜歡你的style kkk include include incl...