栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 扫雷算法扫雷矩阵的每一行每一列都是一个数字,每个数字的含义是与当前位置相邻的8个方向中,有多少个雷(在下图中,雷用*表示);如果当前位置就是雷的话,仍输出一个*。

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 扫雷算法扫雷矩阵的每一行每一列都是一个数字,每个数字的含义是与当前位置相邻的8个方向中,有多少个雷(在下图中,雷用*表示);如果当前位置就是雷的话,仍输出一个*。

描述

小sun上课的时候非常喜欢玩扫雷。他现小sun有一个初始的雷矩阵,他希望你帮他生成一个扫雷矩阵。
扫雷矩阵的每一行每一列都是一个数字,每个数字的含义是与当前位置相邻的8个方向中,有多少个雷(在下图中,雷用表示);如果当前位置就是雷的话,仍输出一个。
比如初始的雷矩阵如下:

....
..**
*.*.
.*.*

对应的数字矩阵为:

0122
13**
*4*4
2*3* 

输入描述:

第一行两个整数n,m,代表矩阵有n行m列

接下来共n行,每行m个字符

输出描述:

输出共n行m列,为扫雷矩阵。

示例1

输入:

4 4
....
..**
*.*.
.*.*

输出:

0122
13**
*4*4
2*3*
示例2

输入:

3 4

....
*..*
.*.*

输出:

1111
*23*
2*3*
备注:
数据范围:
1≤n,m≤10001 leq n,mleq 10001≤n,m≤1000
解决方法:

方法1:

n,m = map(int, input().split())
a = [['.'] * (m+2) for i in range(n+2)]
b = []
for i in range(n):
    b.append(input())
for i in range(n):
    for j in range(m):
        a[i+1][j+1] = b[i][j]
for i in range(1,n+1):
    for j in range(1,m+1):
        if a[i][j] == '.':
            a[i][j] = (a[i-1][j-1:j+2]+a[i][j-1:j+2]+a[i+1][j-1:j+2]).count('*')
for i in range(n):
    for j in range(m):
        print(f'{a[i+1][j+1]}',end = '')
    print('')

方法2:

n,m = list(map(int, input().split()))
a = [['-' for i in range(m+2)]]
for i in range(n):
    b = list('-' + input() + '-')
    a.append(b)
a.append(['-' for i in range(m+2)])
for i in range(1,n+1):
    for j in range(1,m+1):
        if a[i][j] != '*':
            s = 0
            if a[i-1][j] == '*':
                s += 1
            if a[i-1][j-1] == '*':
                s += 1
            if a[i-1][j+1] == '*':
                s += 1
            if a[i][j-1] == '*':
                s += 1
            if a[i][j+1] == '*':
                s += 1
            if a[i+1][j] == '*':
                s += 1
            if a[i+1][j-1] == '*':
                s += 1
            if a[i+1][j+1] == '*':
                s += 1
            a[i][j] = s
for i in a[1:-1]:
    print(''.join(str(j) for j in i[1:-1]))
运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920487.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号