NYOJ 284 坦克大戰(BFS)

2021-06-04 16:39:26 字數 983 閱讀 6491

好累啊,寫篇部落格歇歇。

題目背景很有趣,是大家小時候經常玩的坦克大戰,哈哈。弱弱地表示本人小時候經常玩遊戲機。

此題是在迷宮問題的基礎上做了些改動,就是地圖上能走的點可能耗費時間1,也可能耗費時間2。

那麼,元素在出佇列時,不能簡單的按照以前的入隊順序出隊了,而應該讓時間最短的先出隊,

這樣就能夠保證先入隊的點一定是時間最短的,那麼搜到終點時也時間也一定最小。

現在回頭想下,迷宮問題之所以沒有考慮這個問題,是因為先入隊的點的時間一定不大於後入隊的。

言歸正傳,如何讓時間最短的先出隊呢?----------stl已經幫我們弄好了,priority_queue;

話說優先佇列我也是新接觸的,用法見**吧,大家一起學習。

最近廣搜做的不少,**也比較清晰了吧。

#include #include #include #define bug puts("here!!!")

using namespace std;

typedef struct p

ac;struct cmp

};priority_queue,cmp> s;

int dir=;

int map[302][302];

int to_x,to_y;

int bfs()

); map[x][y]=0;}}

}return -1;

}void clear()

int main()

);break;

case 't':to_x =i,to_y =j;break;

case 'b':map[i][j]=2;break;

case 'e':map[i][j]=1;break;}}

getchar();

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

clear();

}return 0;

}

nyoj284 坦克大戰 搜尋 bfs

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

坦克大戰(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 ...