題目鏈結
題目描述
如下圖所示的是乙個由程式設計題目組成的acm迷宮。迷宮的左上角是入口,右下角是出口。迷宮中每乙個格仔都有乙個程式設計題目,挑戰者要ac該題目後才能通過,大於0的數字表示ac該題目所需的最短時間。數字如果是0表示是陷阱,進去了就出不來。現在的問題是:求挑戰者從入口到出口所需的最短時間。
解題思路:
1、由於狀態轉換太多,利用dfs容易超時,因此運用bfs,採用記憶化,對每個格仔動態更新到此格仔花費的最小時間,過濾掉時間過長的路線,動態更新最短時間即可解決。
#include
#include
#include
#include
using
namespace
std;
//此題的資料大小只有100*100,用深搜求所有路徑的時間複雜度最大為o(100^4)
//考慮剪枝取得的最優路徑可以簡化演算法
int vis[100][100];//記錄地圖
int sum;//記錄當前的最優時間
int sumtime[100][100];//記錄到達某個點的時候的最優時間,並且動態更新
int dx[4]=;
int dy[4]=;
int n;
struct node
;node goal;
node st;
queue
q;int flag;
void bfs()
q.push(nn);}}
}}}
int main()
goal.x=goal.y=n-1;
st.x=st.y=0;
bfs();
printf("min=%d\n",sum);
}}
逃離迷宮(BFS)
problem description 給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能...
逃離迷宮(bfs)
problem description 給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能...
hdu 逃離迷宮 BFS
給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,glori...