详细题解
2026-07-03 10:48:22
发布于:四川
1阅读
0回复
0点赞
求赞求赞求赞求赞求赞求赞求赞求赞求赞求赞求赞
这个题题目给了我们雷在哪,让我们复盘数字。
相信大家都玩过扫雷,我就不多介绍了,先把框架写上:
#include<bits/stdc++.h>
using namespace std;
int main(){
return 0;
}
接下来是输入部分:
#include<bits/stdc++.h>
using namespace std;
char a[105][105];
int main(){
int n, m;
cin >> n >> m;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> a[i][j];
}
}
return 0;
}
我们把输出结果放在另一个数组里面(更方便),然后把它初始化并找到雷区:
#include<bits/stdc++.h>
using namespace std;
char a[105][105], c[105][105];
int main(){
int n, m;
cin >> n >> m;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
c[i][j] = '0';
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> a[i][j];
if(a[i][j] == '*') c[i][j] = '*';
}
}
return 0;
}
枚举所有雷区,改变它周围八个区域内的值(注意,雷区永远不变值):
#include<bits/stdc++.h>
using namespace std;
char a[105][105], c[105][105];
int main(){
int n, m;
cin >> n >> m;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
c[i][j] = '0';
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> a[i][j];
if(a[i][j] == '*') c[i][j] = '*';
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(a[i][j] == '*'){
if(c[i][j-1] != '*') c[i][j-1]++;
if(c[i][j+1] != '*') c[i][j+1]++;
if(c[i-1][j-1] != '*') c[i-1][j-1]++;
if(c[i-1][j] != '*') c[i-1][j]++;
if(c[i-1][j+1] != '*') c[i-1][j+1]++;
if(c[i+1][j-1] != '*') c[i+1][j-1]++;
if(c[i+1][j] != '*') c[i+1][j]++;
if(c[i+1][j+1] != '*') c[i+1][j+1]++;
}
}
}
return 0;
}
最后输出:
#include<bits/stdc++.h>
using namespace std;
char a[105][105], c[105][105];
int main(){
int n, m;
cin >> n >> m;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
c[i][j] = '0';
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> a[i][j];
if(a[i][j] == '*') c[i][j] = '*';
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(a[i][j] == '*'){
if(c[i][j-1] != '*') c[i][j-1]++;
if(c[i][j+1] != '*') c[i][j+1]++;
if(c[i-1][j-1] != '*') c[i-1][j-1]++;
if(c[i-1][j] != '*') c[i-1][j]++;
if(c[i-1][j+1] != '*') c[i-1][j+1]++;
if(c[i+1][j-1] != '*') c[i+1][j-1]++;
if(c[i+1][j] != '*') c[i+1][j]++;
if(c[i+1][j+1] != '*') c[i+1][j+1]++;
}
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cout << c[i][j];
}
cout << '\n';
}
return 0;
}
这里空空如也







有帮助,赞一个