扫雷游戏

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

相关推荐

06-15 20:57
已编辑
门头沟学院 Java
CARLJOSEPH...:年轻人有傲气很正常,但是建议工作前洗净傲气。 说实在的,什么奖学金什么奖项的都很一般。尊重你的老师,在有时间的时候去上课,真遇到走不开的事,请态度端正地向你的老师说明情况,请求请假。我相信任何一个有师德的老师都会允许的(我的老师就是这样)。
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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