逃離ACM迷宮(BFS)

2021-08-04 10:41:39 字數 905 閱讀 3827

題目鏈結

題目描述

如下圖所示的是乙個由程式設計題目組成的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...