Content

有一个 \(n\times m\) 的扫雷地图,请判断这个地图是否合法,即对于所有格子,是否满足:

  • 对应点的数字周围必须有对应数字个雷
  • 空的地方周围没有雷

数据范围:\(1\leqslant n,m\leqslant 100\)。

Solution

我们需要遍历整个地图,如果有雷,就将周围所有的格子全部加 \(1\),最后再判断是否和原地图完全相同即可。

注意需要考虑越界的问题。

Code

const int dx[8] = {0, 0, -1, 1, -1, 1, -1, 1};
const int dy[8] = {1, -1, 0, 0, 1, -1, -1, 1};
int n, m, shouldbe[107][107];
char a[107][107]; int main() {
getint(n), getint(m);
_for(i, 1, n) {
scanf("%s", a[i] + 1);
_for(j, 1, m) {
if(a[i][j] == '*')
_for(k, 0, 7) {
int xx = i + dx[k], yy = j + dy[k];
if(xx < 1 || xx > n || yy < 1 || yy > m) continue;
shouldbe[xx][yy]++;
}
}
}
_for(i, 1, n)
_for(j, 1, m)
if((a[i][j] == '.' && shouldbe[i][j]) || (isdigit(a[i][j]) && a[i][j] - '0' != shouldbe[i][j])) return printf("NO"), 0;
printf("YES");
return 0;
}

最新文章

  1. [总结] I/O输入,输出
  2. C#中可直接调用WIN32的API函数--USER32.DLL
  3. shell 记录
  4. Java学习笔记 第一章 入门&lt;转&gt;
  5. vs中两张图片的融合
  6. 2 JavaScript应用开发实践指南
  7. mysql常见问题
  8. 【BZOJ2653】【主席树+二分】middle
  9. websocket以及自定义协议编程一些总结
  10. Bit Map解析
  11. Hibernate学习之Hibernate流程
  12. shell基础(转)
  13. 微信小程序基础之表单Form的使用
  14. 解决:vue项目中多个echarts图表只有最后一个随浏览器变化改变大小
  15. java中的构造器
  16. reset Cisco 2960 password
  17. python数据类型(字符串、列表操作)
  18. shell中uniq与sort -u 两种去重的对别
  19. QtQuick多页面切换、多页面切换动画、多个qml文件数据交互
  20. python-多线程等概念

热门文章

  1. 四、Zookeeper3.7安装
  2. Ubuntu文件系统结构
  3. idea增加jvm内存
  4. Atcoder Grand Contest 013 E - Placing Squares(组合意义转化+矩阵快速幂/代数推导,思维题)
  5. 洛谷 P5406 - [THUPC2019]找树(FWT+矩阵树定理)
  6. Codeforces 79D - Password(状压 dp+差分转化)
  7. R语言与医学统计图形【3】条形图、误差图
  8. C++类虚函数内存分布(这个 你必须懂)
  9. A Child&#39;s History of England.18
  10. day03 MySQL数据库之主键与外键