专业网站制作公司四川,手机网站宽度是多少,公司装修合同范本,开发公司对代理公司管理题目链接#xff1a;https://www.lanqiao.cn/problems/549/learning/
个人评价#xff1a;难度 1 星#xff08;满星#xff1a;5#xff09; 前置知识#xff1a;无 整体思路
按题意模拟#xff1b;为了减少不必要的“数组越界”判断#xff0c;让数组下标从 1 1 1…题目链接https://www.lanqiao.cn/problems/549/learning/
个人评价难度 1 星满星5 前置知识无 整体思路
按题意模拟为了减少不必要的“数组越界”判断让数组下标从 1 1 1 开始这样即使判断第一行的上一行是否有雷也不用加一个 if(i - 1 0) 的判断了使用一个数组记录 8 8 8 个方向无需 8 8 8 个 if 判断 8 8 8 个方向的雷只需要一个 for 循环加 if 即可。
过题代码
#include bits/stdc.h
using namespace std;typedef long long LL;
const int maxn 100 100;
int n, m;
int ans[maxn][maxn];
// 方向数组
const int dir[8][2] {{-1, -1}, {-1, 0}, {-1, 1},{0, -1}, {0, 1},{1, -1}, {1, 0}, {1, 1}
};int main() {
#ifdef ExRocfreopen(test.txt,r,stdin);
#endif // ExRoccin n m;for (int i 1; i n; i) {for (int j 1; j m; j) {cin ans[i][j];// 直接改为用 9 标记为雷后面直接判断 9 的个数即可if (ans[i][j] 1) {ans[i][j] 9;}}}for (int i 1; i n; i) {for (int j 1; j m; j) {// 已经是雷不用判断周围 8 个位置的雷数if (ans[i][j] 9) {continue;}// 遍历方向数组有雷就 1for (int k 0; k 8; k) {ans[i][j] (ans[i dir[k][0]][j dir[k][1]] 9);}}}// 输出答案for (int i 1; i n; i) {for (int j 1; j m; j) {cout ans[i][j] ;}cout endl;}return 0;
}