nyoj284 坦克大戰 搜尋 bfs

2021-08-14 13:40:50 字數 871 閱讀 5715

樣例輸入

3 4ybeb

eere

sste

0 0樣例輸出 8

題意:從y字母的位置到t字母的位置最少trun了幾次(^@^)。遇到r,s不能走,遇到b的話要turn 2次。坑點在必須用優先佇列,(hiphop-man:為什麼??真的不知道--不喜歡你的style!!!!kkk)

#include#include#include#include#include#include#include#include#include#include#define inf 0x3f3f3f

#define ll long long

#define maxn 350

using namespace std;

int m,n;

struct node

}t,s;

string s[maxn];

int vis[maxn][maxn];

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

bool judge(int x,int y){

if(x>=0&&y>=0&&xq;

vis[s.x][s.y]=1;

q.push(s);

while(!q.empty()){

s=q.top();

q.pop();

int x=s.x,y=s.y,step=s.step;

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

int xx=x+road[i][0];

int yy=y+road[i][1];

if(xx==t.x&&yy==t.y)

return step+1;

//cout<>s[i];

for(int j=0;j

坦克大戰(nyoj284)

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

NYOJ284坦克大戰

bfs求最短路,這個題走到 b 點是要花費2個時間,e 是1個時間,所以要用乙個優先佇列,優先順序就是花費小的先出隊,其餘的就是模板了。include include include using namespace std define inf 0x3f3f3f3f int stx,sty int ...

nyoj 284 坦克大戰 簡單搜尋

題意 在乙個給定圖中,鐵牆,河流不可走,磚牆走的話,多花費時間1,問從起點到終點至少需要多少時間。思路 簡單廣搜 如下 include stdio.h nyoj 284 坦克大戰 簡單搜尋 include string.h include queue using namespace std defi...