求助,有3个过不去,主流思路,我对照玩没看到哪错i
查看原帖
求助,有3个过不去,主流思路,我对照玩没看到哪错i
447173
blessu楼主2021/3/10 15:51
#include<bits/stdc++.h>

using namespace std;    
    int lei[101][101];
 int main()
 {
    int m,n;
    cin>>m>>n;

    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            char s;
            cin>>s;
            if(s=='*') {
                lei[i][j]=-50;}//是雷就置为负数
            else if(s=='?') continue;//不是雷就保持0不变
        }
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(lei[i][j]<0) continue;//自己是雷跳过
            else{
                if(lei[i-1][j+1]<0) lei[i][j]++;
                if(lei[i][j+1]<0) lei[i][j]++;
                if(lei[i+1][j+1]<0) lei[i][j]++;
                if(lei[i-1][j]<0) lei[i][j]++;
                if(lei[i+1][j]<0) lei[i][j]++;
                if(lei[i-1][j-1]<0) lei[i][j]++;
                if(lei[i][j-1]<0) lei[i][j]++;
                if(lei[i+1][j-1]<0) lei[i][j]++;
            }//周围是雷+1;
        }
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(lei[i][j]<0)//是雷就输出*
            {cout<<"*";}
            else {
                cout<<lei[i][j];//不是就输出数字
            }
        }
        cout<<endl;
    }
    
 }
2021/3/10 15:51
加载中...