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