小hi被壞女巫抓進裡一間有n x n個格仔組成的矩陣迷宮。
有些格仔是小hi可以經過的,我們用』.『表示;有些格仔上有障礙物小hi不能經過,我們用』#'表示。小hi的起始位置在左上角,他需要到達右下角的格仔才能逃離迷宮。小hi每一步可以移動到上下左右四個方向相鄰的格仔上,前提是目標格式必須是沒有障礙的。
現在小hi可以用魔法移除格仔上的障礙,也就是』#『變成』.』,使其可以經過。
請你計算在最多能移除k處障礙的情況下,小hi最少移動多少步可以逃離迷宮。
第一行包含2個整數n和k。
以下n行包含乙個n x n的矩陣。
矩陣保證左上角和右下角是』.』。
對於70%的資料,1 <= n <= 100
對於100%的資料,1 <= n <= 1000 1 <= k <= 10
乙個整數表示答案。如果小hi不能逃離迷宮,輸出-1。
5 2.#.#.
#.#.#
.###.
#…#.#…
建立三維陣列表示x,y,座標和在該座標下已經穿過了幾次障礙,使用寬度優先搜尋演算法即可解決問題
#include#include#include#include#includeusing namespace std;
#define n 1010
char s[n];
bool obstacle[n][n];
struct node
node(int x,int y,int cnt,int dis):x(x),y(y),cnt(cnt),dis(dis){}
friend bool operator <(const node &a,const node &b)
}front;
priority_queueque;
int dx[4]=,dy[4]=;
int dis[n][n][15];
int n,k;
void bfs()
} }int ans=n*n;
for (int i=0;i<=k;i++)
ans = min(ans,dis[n][n][i]);
printf("%d\n", ans);
}int main()
getchar();
} bfs();
return 0;
}
dfs bfs 逃離迷宮
給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,glori...
A 逃離迷宮 DFS
給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,glori...
逃離迷宮(BFS)
problem description 給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能...