怀旧书本
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
// queue: hh ... tt
int tt = -1, hh, n, m;
PII q[10005];
int d[105][105], mat[105][105];
int main() {
    cin >> n >> m;
    for (int r = 0; r < n; ++r) {
        for (int c = 0; c < m; ++c) {
            cin >> mat[r][c];
        }
    }
    q[++tt] = {0, 0};
    d[0][0] = 0;
    int di[5] = {0, 1, 0, -1, 0}; // right down left up
    while (hh <= tt) {
        auto pa = q[hh++];
        for (int i = 0; i < 4; ++i) {
            int nr = pa.first + di[i];
            int nc = pa.second + di[i + 1];
            if (nr < 0 || nr >= n || nc < 0 || nc >= m) continue;
            if (d[nr][nc]) continue;
            if (mat[nr][nc]) continue;
            int nd = d[pa.first][pa.second] + 1;
            d[nr][nc] = nd;
            q[++tt] = {nr, nc};
        }
    }
    
    cout << d[n - 1][m - 1] << endl;
    return 0;
}
本文为原创文章,欢迎分享,勿全文转载,如果内容你实在喜欢,可以加入收藏夹,说不定哪天故事又继续更新了呢。
本文地址:https://qoogle.top/walk-the-maze/
最后修改日期:2020年5月6日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。