正经题解|填涂颜色
2024-03-22 11:04:49
发布于:浙江
146阅读
0回复
0点赞
【算法分析】
可以在外面增加一圈 ,然后从 位置开始广搜所有为 的位置,没有被搜索到且为 的位置就应该变为 。
【参考代码】
#include<bits/stdc++.h>
using namespace std;
int a[39][39];
bool vis[39][39];
struct node {
int x, y;
}l,r;
int n;
int dir[4][2] = { -1,0,0,1,1,0,0,-1 };
void bfs(int x, int y) {
queue<node> q;
q.push({ x,y });
vis[x][y] = 1;
while (q.size()) {
r = q.front();
q.pop();
for (int i = 0; i < 4; i++) {
l.x = r.x + dir[i][0], l.y = r.y + dir[i][1];
if (l.x >= 0 && l.x <= n + 1 && l.y >= 0 && l.y <= n + 1 && !vis[l.x][l.y] && a[l.x][l.y] == 0) {
vis[l.x][l.y] = 1;
q.push(l);
}
}
}
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> a[i][j];
}
}
bfs(0, 0);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (a[i][j] == 0 && !vis[i][j]) {
cout << 2 << " ";
}
else cout << a[i][j] << " ";
}
cout << '\n';
}
return 0;
}
【时间复杂度】
【预计得分】
全部评论 1
#include<ac君 is Handsome!!!> using handsome ac君 int main(){ cout<<"ac君最帅!!!"; return 0; }
2024-08-04 来自 北京
0
有帮助,赞一个