蓝桥杯每日一题:扫雷

题目来源:第十三届蓝桥杯软件赛省赛 B组

在一个 n n n 行 m m m 列 的方格图中有些位置有地雷, 另外一些位置为空

请为每个空位置标一个整数, 表示周围八个相邻的方格中有多少个地雷

输入 : 输入的第一行包含两个整数 n n n , m m m

第 2 行 到 第 n + 1 n + 1 n+1 行每行包含 m m m 个整数, 相邻整数之间用一个空格分隔. 如果对应的整数为 0 , 表示这一格没有地雷, 如果对应的整数为 1 , 表示这一格有地雷

其中, 1 ≤ n , m ≤ 100 1 \le n, m \le 100 1≤n,m≤100

输出 : 输出 n n n 行, 每行 m m m 个整数, 相邻整数之间用空格分隔

对于没有地雷的方格, 输出这格周围的地雷数量. 对于有地雷的方格, 输出 9

Input Sample :

复制代码
3 4
0 1 0 0
1 0 1 0
0 0 1 0

Output Sample :

复制代码
2 9 2 1
9 4 9 2
1 3 9 2

简单的爆搜题, 非常简单, 而且其实这道题就是爆搜的模板题. 有系统练习过的话直接秒ac

蓝桥杯居然还把它的难度评为 "困难" , 有点搞笑了

下面给出题解代码, 请注重思考, 不要无脑cv

c++ 复制代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, m;
const int maxn = 101;
int dx[8] = {-1, -1, 0, 1, 1, 1, 0, -1};
int dy[8] = {0, 1, 1, 1, 0, -1, -1, -1};
int a[maxn][maxn], res[maxn][maxn];

void io() {
	cin.tie(0);
	cout.tie(0);
	ios::sync_with_stdio(false);
}

int dfs(int x, int y) {
	if (a[x][y] == 1) {
		return 9;
	}
	int cnt = 0;
	for (int i = 0; i < 8; i++) {
		int xx = x + dx[i];
		int yy = y + dy[i];
		if (xx >= 1 && xx <= n && yy >= 1 && yy <= m && a[xx][yy] == 1) {
			cnt++;
		}
	}
	return cnt;
}

int main() {
	io();
	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++) {
			res[i][j] = dfs(i, j);
		}
	}

	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			cout << res[i][j] << ' ';
		}
		cout << '\n';
	}
	return 0;
}
相关推荐
leiming61 分钟前
c++ string 容器
开发语言·c++·算法
wljun7391 小时前
六、OrcaSlicer 切片之区域
算法·切片软件 orcaslicer
2401_841495641 小时前
【LeetCode刷题】跳跃游戏Ⅱ
数据结构·python·算法·leetcode·数组·贪心策略·跳跃游戏
leaves falling1 小时前
动态规划讲解
算法·动态规划
记得多喝水o1 小时前
技术岗能“混”进去再学?
职场和发展
钓鱼的肝1 小时前
GESP系列(3级)小杨的储蓄
开发语言·数据结构·c++·笔记·算法·gesp
MicroTech20251 小时前
MLGO微算法科技推出人工智能与量子计算融合新成果:基于QLSS与LCHS的量子DPM算法技术
人工智能·科技·算法
runafterhit1 小时前
《新家庭如何塑造人》阅读总结-个人与家庭成长
程序人生
Gary Studio1 小时前
面试经验积累
面试·职场和发展
AndrewHZ1 小时前
【图像处理基石】[特殊字符]圣诞特辑:10+经典图像处理算法,让你的图片充满节日氛围感!
图像处理·人工智能·opencv·算法·计算机视觉·stable diffusion·节日氛围感