hdu1072 bfs 剪枝(每一點可重複走過)

2021-07-24 17:09:24 字數 803 閱讀 9485

題目鏈結 nightmare

炸彈**的限時是6s,一步減掉1s,在'4'方塊上炸彈**時間重置為6s

但是走到'4'和終點時的剩餘時間必須大於0

最短路徑:bfs

注意每點可以重複走過,必須剪枝,否則就停不下來了

如果第二次走過『1』時,bomb的剩餘時間比之前更短,那就不用走了,不值得

第二次走過'4'時,雖然bomb可以重置為6,但是step肯定變大了,所以也不用走

#include #include #include #include using namespace std;

struct node

;int n,m;

int sx,sy,ex,ey;

int g[10][10];

bool vis[10][10];

int bomb[10][10];

int dx=;

int dy=;

bool check(int x,int y)

int bfs()

}else if(g[next.x][next.y]==4)

}else if(g[next.x][next.y]==3)return next.step;}}

}}

return -1;

}int main()

{ //freopen("in.txt","r",stdin);

int t;

scanf("%d",&t);

while(t--){

scanf("%d%d",&n,&m);

for(int i=0;i

HDU 1072 bfs或者帶剪枝的記憶化dfs

本題目由於普通的個子可以重複走 在樣例三中可以看出 所以不能通過標記位限制只能走一次,但是需要進行一定的限制防止無限的迴圈。實際上,為4的格仔只需要走一次,重複走只會使得步數變的更多,並不會增加到達目標位置的能力,因此,在bfs中,只需要限制重置點只能走一次即可。其他格仔,除了起點以外,都可以重複走...

HDU 1753 大明A B(仔細一點耐心一點)

話說,經過了漫長的乙個多月,小明已經成長了許多,所以他改了乙個名字叫 大明 這時他已經不是那個只會做100以內加法的那個 小明 了,現在他甚至會任意長度的正小數的加法。現在,給你兩個正的小數a和b,你的任務是代表大明計算出a b的值。本題目包含多組測試資料,請處理到檔案結束。每一組測試資料在一行裡面...

工廠車間的「隱患」,每一點都需要注意!

工廠車間的 隱患 每一點都需要注意!一 起重機 起重機械的話想必各位模具師傅都是接觸過的,正是因為它很常見,所以我們在日常工作中更加要注意規範使用,如果使用不當的話很可能會造成墜物傷害事故。使用起重機一定要遵守 十不吊 規定,要定時檢查鋼絲繩和吊索,如果有裂紋 磨損一定要及時更換。二 叉車 一定要記...