洛谷P2670扫雷游戏

题目传送

代码:

#include<bits/stdc++.h>

using namespace std;
#define MAXN 105
int arr[MAXN][MAXN];
char mp[MAXN][MAXN];
int dict[8][2] = {
   
   {1,0},{0,1},{-1,0},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
void input_data(int n,int m)
{
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            cin>>mp[i][j];
        }
    }
    return ;
}
int produce(int x,int y,int n,int m)
{
    if(mp[x][y] == '*')
    {
        arr[x][y] = -1;
        return 0;
    }
    int xx,yy;
    int cnt = 0;
    for(int i=0; i<8; i++)
    {
        xx = x + dict[i][0];
        yy = y + dict[i][1];
        if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&mp[xx][yy]=='*')
        {
            cnt++;
        }
    }
    arr[x][y] = cnt;
    return 0;
}
int out_data(int n,int m)
{
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            if(arr[i][j] == -1)
            {
                cout<<"*";
            }else
            {
                cout<<arr[i][j];
            }
        }
        cout<<endl;
    }
    return 0;
}
int main()
{
    int n,m;
    cin>>n>>m;
    input_data(n,m);
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            produce(i,j,n,m);
        }
    }
    out_data(n,m);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38851184/article/details/108779320