解题思路:
给原矩阵中增加一个padding即可避免判断“需要找几个邻居”的问题(灵感来源于计算机视觉中的Padding操作)
注意事项:
参考代码:
counter = 1 while 1: row, col = map(int, input().split()) if row == col == 0: break padding = ['.' for _ in range(col + 2)] field, mine = [padding, padding], [[0 for _ in range(col + 1)] for _ in range(row + 1)] for i in range(1, row + 1): field.insert(i, ['.'] + list(input()) + ['.']) for j in range(1, row + 1): for k in range(1, col + 1): if field[j][k] == '*': mine[j][k] = '*' else: temp = [field[j + 1][k + 1], field[j - 1][k - 1], field[j + 1][k - 1], field[j - 1][k + 1], field[j + 1][k], field[j - 1][k], field[j][k - 1], field[j][k + 1] ] mine[j][k] = sum(1 for i in temp if i == '*') print(f"Field #{counter}:") counter += 1 for i in range(1, row + 1): print(*mine[i][1:], sep='') print()
0.0分
3 人评分
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:716 |
C语言训练-数字母 (C语言代码)浏览:585 |
【出圈】 (C语言代码)浏览:796 |
WU-输入输出格式练习 (C++代码)浏览:1082 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:672 |
1157题解浏览:715 |
1642题解浏览:715 |
理财计划 (C语言代码)浏览:467 |
矩阵转置 (C语言代码)浏览:783 |
小O的数字 (C语言代码)浏览:1411 |