P2670扫雷

it2026-03-09  8

链接

这是一个并不像搜索的题(其实它是个循环)

对于输入的a数组,一个一个遍历下来,如果a[i][j]是雷,那(i,j)周围8个点对应的位置雷数就+1(用b数组记录),注意不能超出边界,输出时,如果a[i][j]是雷,就输出"*",如果不是雷,就输出b[i][j]

题解:

#include<iostream>

#include<cstdio>using namespace std;int m,n;char a[101][101];//雷int b[101][101];//周围有几颗雷bool c[101][101];void print(){ for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) {if(a[i][j]=='*')cout<<a[i][j]; else cout<<b[i][j]; if(j==m)cout<<endl; } }}void search(int x,int y){ for(int i=x;i<=n;i++) { for(int j=y;j<=m;j++) {if(a[i][j]=='*') {b[i][j+1]++;b[i-1][j]++;b[i+1][j]++;b[i][j-1]++; b[i-1][j-1]++;b[i-1][j+1]++;b[i+1][j+1]++;b[i+1][j-1]++;} } } print();}

int main(){cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) cin>>a[i][j]; } search(1,1);}

转载于:https://www.cnblogs.com/lcez56jsy/p/10403466.html

相关资源:数据结构—成绩单生成器
最新回复(0)