扫雷游戏

#include<stdio.h>
#include<iostream>
using namespace std;
bool map[105][105];
int sum[105][105];
int main() {
  int n, m;
  cin >> n >> m;
  char ch;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cin >> ch;
      if (ch == '*') map[i][j] = true;
      else map[i][j] = false;
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (map[i][j] == false) {
        if (map[i-1][j] == true && i-1 >= 0) sum[i][j]++;
        if (map[i+1][j] == true && i+1 <= n) sum[i][j]++;
        if (map[i][j+1] == true && j+1 <= m) sum[i][j]++;
        if (map[i][j-1] == true && j-1 >= 0) sum[i][j]++;
        if (map[i-1][j-1] == true && (i-1 >= 0 && j-1 >= 0)) sum[i][j]++;
        if (map[i+1][j+1] == true && (i+1 <= n && j+1 <= m)) sum[i][j]++;
        if (map[i+1][j-1] == true && (i+1 <= n && j-1 >= 0)) sum[i][j]++;
        if (map[i-1][j+1] == true && (i-1 >= 0 && j+1 <= m)) sum[i][j]++;
      }
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (map[i][j] == true) cout << '*';
      else cout << sum[i][j];
    }
    if (i < n)
      cout << endl;
  }
}
用了比较笨的方法AC,不知道有没有更好更简洁的办法可以分享
全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务