题解 | #扫雷#

扫雷

https://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd?tpId=290&tqId=540914&ru=%2Fpractice%2F2dbf0151eb71402e968a2a8e59092568&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D290%26type%3D290

#include <stdio.h>

int main()
{
    int arr[1000][1000];
    int n = 0, m = 0;
    scanf("%d %d", &n, &m);

    for (int i = 0; i < n + 2; i++)//遍历数组
    {
        for (int j = 0; j < m + 2; j++)
        {
            arr[i][j] = 0;
        }
    }

    char temp = 0;
    for (int i = 1; i <= n; i++)//符号换数字
    {
        for (int j = 1; j <= m; j++)
        {
            scanf(" %c", &temp);
            if ('*' == temp)
            {
                arr[i][j] = -1;
            }
            else
            {
                arr[i][j] = 0;
            }
        }
    }

    for (int i = 1; i <= n; i++)//查找周围雷
    {
        for (int j = 1; j <= m; j++)
        {
            if (arr[i][j] != -1)
            {
                for (int x = i - 1; x <= i + 1; x++)
                {
                    for (int y = j - 1; y <= j + 1; y++)
                    {
                        if (arr[x][y] == -1)
                        {
                            arr[i][j]++;
                        }
                    }
                }
            }
        }
    }

    for (int i = 1; i <= n; i++)//输出
    {
        for (int j = 1; j <= m; j++)
        {
            if (arr[i][j] != -1)
            {
                printf("%d", arr[i][j]);
            }
            else
            {
                printf("*");
            }
        }
        printf("\n");
    }

    return 0;
}

全部评论

相关推荐

瑞雪兆丰年_:可以贴个超级大的校徽,以防HR眼拙
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务