扫雷游戏

#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,不知道有没有更好更简洁的办法可以分享
全部评论

相关推荐

昨天 11:12
重庆大学 C++
既然这么缺人,为什么挂我呢
希望被offer砸中...:其实不缺人
点赞 评论 收藏
分享
06-04 09:27
门头沟学院 Java
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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