蓝桥云课-长草
链接:https://www.lanqiao.cn/problems/149/learning/来源:蓝桥云课思路:利用bfs,先把‘g’入队列,上下左右全部长一根草,加上边界条件,记录需要多少分钟到达这个点,如果超过了跳出,得出的就是最后的结果了。#include <bits/stdc++.h>using namespace std;struct Node{int x ,y;// x
文章共1,622字 · 阅读需要大约6分钟
一键AI生成摘要,助你高效阅读
问答
·
长草
链接:
https://www.lanqiao.cn/problems/149/learning/
来源:
蓝桥云课
思路:
利用bfs,先把‘g’入队列,上下左右全部长一根草,加上边界条件,记录需要多少分钟到达这个点,如果超过了跳出,得出的就是最后的结果了。
#include <bits/stdc++.h>
using namespace std;
struct Node
{
int x ,y;// x轴 y轴
};
char a[1005][1005];
queue<Node> q;
int bk[1005][1005];
int main()
{
int n ,m ;
cin >> n >> m;
for(int i = 1 ; i <= n ;i++){
for(int j = 1 ; j <=m ; j++){
cin >> a[i][j] ;
if(a[i][j]=='g'){
q.push({i,j});//先把‘g’入队列
bk[i][j]=1;
}
}
}
int k ;
cin >> k;
while(q.size()){
Node u =q.front();
q.pop();
if(bk[u.x][u.y]==k+1)break;//超过了跳出
if(u.x>1&&bk[u.x-1][u.y]==0){//上下左右全部长一根草
bk[u.x-1][u.y] = bk[u.x][u.y]+1;
q.push({u.x-1,u.y});
}
if(u.x<n&&bk[u.x+1][u.y]==0){
bk[u.x+1][u.y] = bk[u.x][u.y]+1;
q.push({u.x+1,u.y});
}
if(u.y>1&&bk[u.x][u.y-1]==0){
bk[u.x][u.y-1] = bk[u.x][u.y]+1;
q.push({u.x,u.y-1});
}
if(u.y<m&&bk[u.x][u.y+1]==0){
bk[u.x][u.y+1] = bk[u.x][u.y]+1;
q.push({u.x,u.y+1});
}
}
for(int i = 1 ; i <= n ;i++){
for(int j = 1 ; j <=m ; j++){
if(bk[i][j]==0) cout << '.';
else cout << 'g';
}
cout << endl;
}
return 0;
}```
更多推荐
已为社区贡献2条内容
所有评论(0)