社区讨论

请问怎么优化啊 这代码又臭又长

B3625迷宫寻路参与者 5已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo2qbs1m
此快照首次捕获于
2023/10/23 18:02
2 年前
此快照最后确认于
2023/10/23 18:02
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
#define N 105
using namespace std;
int n, m;
bool vis[N][N];
void bfs(int x, int y) {
    queue<pair<int, int>> q;
    q.push(make_pair(x, y));
    vis[x][y]=true;
    while(!q.empty()) {
        pair<int, int> p=q.front();
        q.pop();
        int x1=p.first, y1=p.second;
        if(x1==m && y1==n) {
        	cout << "Yes";
        	return;
		}
        if(!vis[x1+1][y1]) {
            vis[x1+1][y1]=true;
            q.push(make_pair(x1+1, y1));
        }
        if(!vis[x1][y1+1]) {
            vis[x1][y1+1]=true;
            q.push(make_pair(x1, y1+1));
        }
        if(!vis[x1-1][y1]) {
            vis[x1-1][y1]=true;
            q.push(make_pair(x1-1, y1));
        }
        if(!vis[x1][y1-1]) {
            vis[x1][y1-1]=true;
            q.push(make_pair(x1, y1-1));
        }
    }
    cout << "No";
}
int main() {
    char a;
    cin >> n >> m;
    for(int i = 1;i <= n;i++) {
        for(int j = 1;j <= m;j++) {
            cin >> a;
            if(a=='#') vis[j][i]=true;
        }
    }
    for(int i = 0;i <= n+1;i++) {
        vis[0][i]=vis[m+1][i]=true;
    }
    for(int i = 0;i <= m+1;i++) {
        vis[i][0]=vis[i][n+1]=true;
    }
    bfs(1, 1);
    return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...