80分 求助
查看原帖
80分 求助
1067945
SymmFz楼主2023/9/19 22:34

#include <stdio.h>
int main()
{
    int n, m;
    scanf("%d %d", &m, &n);
    int isBoom[n+2][m+2]; // 雷标记:是雷为1, 非雷为0
    int boomCnt[n+2][m+2]; // 雷计数:周围8格的雷数
    // 雷图外围多出一圈, 认为这一圈元素不是雷

    // 初始化两个数组
    for (int i=0; i<n+2; i++)    
    {
        for (int j=0; j<m+2; j++)
        {
            isBoom[i][j] = 0;
            boomCnt[i][j] = 0;
        }
    }

    // 输入雷图, 标记雷的位置
    char ch;
    for (int i=1; i<n+1; i++)    
    {
        for (int j=1; j<m+1; j++)
        {
            scanf(" %c", &ch);
            if (ch=='*')
            {
                isBoom[i][j] = 1;
            }
        }
    }
    
    // 输出雷的数量, 雷图外增加的一圈不输出
    for (int i=1; i<n+1; i++)    
    {
        for (int j=1; j<m+1; j++)
        {
            if (isBoom[i][j] == 1) 
            {
                printf("%c", '*');
            }
            else {
                // 计算周围 8 格的雷数
                boomCnt[i][j] = isBoom[i-1][j] + isBoom[i+1][j] + isBoom[i][j-1] + isBoom[i][j+1] +
                                isBoom[i-1][j-1] + isBoom[i-1][j+1] +
                                isBoom[i+1][j-1] + isBoom[i+1][j+1];
                printf("%d", boomCnt[i][j]);
            }
        }
        printf("\n");
    }
}



2023/9/19 22:34
加载中...