扫雷游戏
直接在数组上处理!
其实不烦,只要加一层边框,就好啦~~~
没错就是酱紫滴:
int n, m;
cin >> n >> m;
char a[n + 1][m + 1];
int s[n + 2][m + 2] = {0};
其他的就很简单啦,诺:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
char a[n + 1][m + 1];
int s[n + 2][m + 2] = {0};
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
if (a[i][j] != '*') {
continue;
}
s[i - 1][j - 1]++;
s[i - 1][j]++;
s[i - 1][j + 1]++;
s[i][j - 1]++;
s[i][j + 1]++;
s[i + 1][j - 1]++;
s[i + 1][j]++;
s[i + 1][j + 1]++;
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (a[i][j] == '*') {
cout << '*';
} else {
cout << s[i][j];
}
}
cout << endl;
}
return 0;
}
附录(给菜鸟看) 解释一下这段
s[i - 1][j - 1]++;
s[i - 1][j]++;
s[i - 1][j + 1]++;
s[i][j - 1]++;
s[i][j + 1]++;
s[i + 1][j - 1]++;
s[i + 1][j]++;
s[i + 1][j + 1]++;
| 如果中间的那个格子是a[x][y],则周围是: | a[x - 1][y - 1] | a[x - 1][y] | a[x - 1][y + 1] |
|---|---|---|---|
| a[x][y -1] | a[x][y] | a[x][y + 1] | |
| a[x + 1][y - 1] | a[x + 1][y] | a[x + 1][y + 1] |
OK,今天内容到此结束!(:з」∠)