题解 | #扫雷#

扫雷

https://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd

#include<stdio.h>
int get_count(char arr[1001][1001], int i, int j)
{
    if (arr[i][j] == '*')//arr[i][j]是雷就返回-1,不是雷就计算周围有多少个雷。
        return -1;
    int count = 0;
    int x = i - 1;
    while (x <= i + 1)//排查9个位置,arr[i][j]位置肯定不是雷。
    {
        int y = j - 1;
        while (y <= j + 1)
        {
            if (arr[x][y] == '*')
                count++;
            y++;
        }
        x++;
    }
    return count;
}
int main()
{
    char arr[1001][1001] = { 0 };
    int n = 0;
    int m = 0;
    scanf("%d %d", &n, &m);
    //布置雷
    for (int i = 1; i <= n; i++)
    {
        getchar();
        for (int j = 1; j <= m; j++)
        {
            scanf("%c", &arr[i][j]);
        }
    }
    //排查雷
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            int ret = get_count(arr, i, j);//返回周围雷的个数,如果该位置就是雷则返回-1.
            if (ret == -1)
            {
                arr[i][j] = '*';
            }
            else
            {
                arr[i][j] = '0' + ret;//将数字转化为字符
            }
        }
    }
    //打印排雷结果
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            printf("%c", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

全部评论

相关推荐

与火:这不接? 留子的钱不挣白不挣
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务