【蓝桥杯每日一题】扫雷——暴力搜索
扫雷
蓝桥杯每日一题 2024-12-20 扫雷 暴力搜索
题目大意
在一个 n 行 m 列的方格图上有一些位置有地雷,另外一些位置为空。
请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。
解题思路
今天算是水了一道暴力搜索题,还是接着滚回去写线段树吧!
这个题直接搜就行了,只有100 的数据量,还要什么bike
Accepted
#include <iostream>
using namespace std;
const int N = 110;
int a[N][N],b[N][N];
int n,m;
int dx[8] = {-1,-1,-1,0,1,1,1,0};
int dy[8] = {-1,0,1,1,1,0,-1,-1};
void bfs(int x,int y) {
int k = 0;
for(int i = 0;i < 8;i++) {
int xx = dx[i] + x,yy = dy[i] + y;
if(xx >= 1 && xx <= n && yy >= 1 && y <= m && a[xx][yy]) {
k ++;
}
}
if(a[x][y]) {
b[x][y] = 9;
} else {
b[x][y] = k;
}
}
int main()
{
cin>>n>>m;
for(int i = 1;i <= n;i++) {
for(int j = 1;j <= m;j++) {
cin>>a[i][j];
}
}
for(int i = 1;i <= n;i++) {
for(int j = 1;j <= m;j++) {
bfs(i,j);
}
}
for(int i = 1;i <= n;i++) {
for(int j = 1;j <= m;j++) {
cout<<b[i][j]<<" ";
}
cout<<endl;
}
return 0;
}