逃離迷宮6

2021-09-25 14:12:51 字數 1178 閱讀 1798

小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不能...