B. Minesweeper 思维 二种思路

网友投稿 537 2022-11-06

B. Minesweeper 思维 二种思路

B. Minesweeper  思维  二种思路

​​传送门​​​ 题意:模拟扫雷步骤,有雷的去标记,看是否存在标记错误的情况。 扫雷的规则是:如果一个区域八种方向存在雷的话,这个地方就要标记上数字,有几个雷标记几。 思路; 两种思路: 一:开两个数组,将字符型数组转化为整型数组, 一个数组存原图,将’.‘全转化为0。其余的字符数字-‘0’转化为整形。 遍历原来的数组,遇到‘*'就将八个方向不是雷的区域-1. 最后扫一遍整形图,如果有不等于0的区域就直接NO即可。 二:在原图的基础上修改,遇到’.‘就将其变为0,遇到数字就-‘0’转化为整形。最后在原数组上进行遍历,遇到数字去找雷,如果雷的个数不等于数字个数,那么直接NO -> return 0. 第一种:

#include #define ll long longconst int maxn = 1e5 + 5;using namespace std;char a[105][105];int b[105][105];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] == '.') b[i][j] = 0; else if(a[i][j]!='*') b[i][j]=a[i][j]-'0'; } for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) if (a[i][j] == '*') { if (a[i][j + 1] != '*') b[i][j+1]--; if (a[i][j - 1] != '*') b[i][j-1]--; if (a[i + 1][j] != '*') b[i+1][j]--; if (a[i - 1][j] != '*') b[i-1][j]--; if (a[i + 1][j + 1] != '*') b[i+1][j+1]--; if (a[i + 1][j - 1] != '*') b[i+1][j-1]--; if (a[i - 1][j + 1] != '*') b[i-1][j+1]--; if (a[i - 1][j - 1] != '*') b[i-1][j-1]--; } bool flag = 1; for (int i = 1; i <= n; i++){ for (int j = 1; j <= m; j++) if(b[i][j]!=0) {cout << "NO" << endl; //system("pause"); return 0;}} cout << "YES" << endl; //system("pause"); return 0;}

第二种:

#include #define ll long longconst int maxn = 1e5 + 5;using namespace std;char a[105][105];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] == '.') a[i][j] = 0; else if (a[i][j] != '*') a[i][j] -= '0'; } int cnt = 0; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) if (a[i][j] != '*') { if (a[i + 1][j] == '*') cnt++; if (a[i - 1][j] == '*') cnt++; if (a[i][j + 1] == '*') cnt++; if (a[i][j - 1] == '*') cnt++; if (a[i + 1][j + 1] == '*') cnt++; if (a[i + 1][j - 1] == '*') cnt++; if (a[i - 1][j + 1] == '*') cnt++; if (a[i - 1][j - 1] == '*') cnt++; if (cnt != a[i][j]) { cout << "NO" << endl; return 0; } cnt=0; } cout<<"YES"<

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:计蒜客 补码 模拟题
下一篇:Qt图形视图框架(四) Item之间的关系
相关文章

 发表评论

暂时没有评论,来抢沙发吧~