90分求助 #9未过 C++佬来捞捞
查看原帖
90分求助 #9未过 C++佬来捞捞
905233
Rebirth_Yun楼主2023/5/29 09:52

大体思路就是通过四个判断来确定八向

#include<iostream>
using namespace std;
const int MAX =105;
char fx[MAX][MAX];
int main()
{
    int n,m;
    cin >> n >> m;

    for(int i=0;i<n;i++)//全部输入
    {
        for(int j=0;j<m;j++)
        {
            cin >> fx[i][j];
        }
    }

    for(int i=0;i<n;i++)//开始判断每一个元素
    {
        for(int j=0;j<m;j++)
        {
            int sum=0;//每一个元素的计数菌

            if(fx[i][j]=='*')//是地雷直接输出
            {
                cout << '*';
            }
            else
            {
                int x1=-1,x2=1;//八向
                int y1=-1,y2=1;

                if(j==0)//判断边界
                {
                    x1=0;
                }
                if(i==0)
                {
                    y1=0;
                }

                if(j==m-1)
                {
                    x2=0;
                }
                if(i==m-1)
                {
                    y2=0;
                }

                for(int k=i+y1;k<=i+y2;k++)
                {
                    for(int l=j+x1;l<=j+x2;l++)
                    {
                        if(fx[k][l]=='*')//查雷
                        {
                            sum+=1;
                        }
                    }
                }
                cout << sum;//输出排查雷数
            }       
        }
        cout << endl;//换行
    }
    return 0;
}

2023/5/29 09:52
加载中...