hturtle 2022-08-06 11:50 采纳率: 100%
浏览 36
已结题

洛谷P2670 样例过不了,1AC


#include<cstdio>
using namespace std;

int n = 0 , m = 0;
int ans = 0;

int main()
{
    scanf("%d%d",&n,&m);
    char excel[n][m];
    for (int i = 0 ; i < n ; i++)
    {
        for (int j = 0 ; j < m ; j++)
        {
            scanf("%c",&excel[i][j]);
        }
    }
    
    for (int i = 0 ; i < n ; i++)
    {
        for (int j = 0 ; j < m ; j++)
        {
            if (excel[i][j] == '*')
            {
                printf("*");
                continue;
            }
            
            if (i-1 != -1)
            {
                if (excel[i-1][j] == '*') ans++;
            }
            if (i-1 != -1 && j-1 != -1)
            {
                if (excel[i-1][j-1] == '*') ans++;
            }
            if (j-1 != -1)
            {
                if (excel[i][j-1] == '*') ans++;
            }
            if (j-1 != -1 && i+1 != n)
            {
                if (excel[i+1][j-1] == '*') ans++;
            }
            if (i+1 != n)
            {
                if (excel[i+1][j] == '*') ans++;
            }
            if (i+1 != n && j+1 != m)
            {
                if (excel[i+1][j+1] == '*') ans++;
            }
            if (j+1 != m)
            {
                if (excel[i][j+1] == '*') ans++;
            }
            if (i-1 != -1 && j+1 != m)
            {
                if (excel[i-1][j+1] == '*') ans++;
            }
            
            printf("%d",ans);
            ans = 0;
        }
        printf("\n");
    }
    return 0;
}

展开全部

  • 写回答

2条回答 默认 最新

  • Sirius·Black 2022-08-06 11:59
    关注
    
    #include<iostream>
    using namespace std;
    int main()
    {
        char a[105][105];
        int b[105][105],n,m,i,j;//数组定义(二维)
        cin>>n>>m;//读入行、列
        for(i=1;i<105;i++)
            for(j=1;j<105;j++)
                b[i][j]=0;//给数组赋值为0
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++)
            {
                cin>>a[i][j];
                if(a[i][j]=='*')//判断:如果是地雷
                {
                    b[i+1][j+1]++;
                    b[i+1][j-1]++;
                    b[i+1][j]++;
                    b[i][j+1]++;
                    b[i][j-1]++;
                    b[i-1][j]++;
                    b[i-1][j+1]++;
                    b[i-1][j-1]++;//相邻的八个格子都+1                
                }
            }
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=m;j++)
            {
                if(a[i][j]=='*')
                    cout<<"*";//如果是地雷(*) 原样输出
                else
                    cout<<b[i][j];//否则输出数字
            }    
            cout<<endl;
        }
        return 0;
    }
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 8月13日
  • 已采纳回答 8月6日
  • 请采纳用户回复 8月6日
  • 创建了问题 8月6日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部