1 条题解
-
1
这道题其实不是特别特别难。只需要把思路捋捋清楚就好了。话不多说,先上AC代码:
#include<bits/stdc++.h>
using namespace std;//万能头文件 int n,m;
char a[1005][1005];
int main() {
cin>>n>>m; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { cin>>a[i][j];//输入二维数组 } } for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { int k=0; if(a[i][j]!='*') { if(a[i+1][j]=='*') { k++; } if(a[i-1][j]=='*') { k++; } if(a[i+1][j+1]=='*') { k++; } if(a[i+1][j-1]=='*') { k++; } if(a[i][j+1]=='*') { k++; } if(a[i][j-1]=='*') { k++; } if(a[i-1][j+1]=='*') { k++; } if(a[i-1][j-1]=='*') { k++; } a[i][j]='0'+k; } } } for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { cout<<a[i][j]; } cout<<endl; } return 0;
} 我们做这道题需要先定好“地雷格”的长和宽,然后再开一个二维数组。 定一个变量(注意,变量要在循环里初始化)用来计算空格附近的雷的数量。 至于第40行的“a[i][j]='0'+k;”,因为二维数组a是属于char类型的,所以0需要加一对单引号。 最后未知的空都已经被填掉了,所以只需要将数组输出就好了。 如果还有dalao有更简单的方法,也希望可以分享一下,蟹蟹哦 PS:谢绝复制
信息
- ID
- 498
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- 递交数
- 10
- 已通过
- 5
- 上传者