python|201512-2 python CCF 更简单的思路和算法 100分
n, m = map(int, input().split())
chessboard = [list(map(int, input().split())) for i in range(n)]#输入数据
flagboard = [[1] * m for i in range(n)]# 1表示未被消去
for i in range(n):#行遍历
for j in range(m - 2):
if chessboard[i][j] == chessboard[i][j + 1] == chessboard[i][j + 2]:
flagboard[i][j] = 0
flagboard[i][j + 1] = 0
flagboard[i][j + 2] = 0
for j in range(m):#列遍历
for i in range(n - 2):
if chessboard[i][j] == chessboard[i + 1][j] == chessboard[i + 2][j]:
flagboard[i][j] = 0
flagboard[i + 1][j] = 0
flagboard[i + 2][j] = 0
for i in range(n):#按照标记消去元素
for j in range(m):
chessboard[i][j] *= flagboard[i][j]
print(" ".join(map(str, chessboard[i])))
心得:消去元素的题,先标记,再消去
注意如下代码:
flagboard = [[1] * m for i in range(n)]
如果改为
flagboard = [[1] * m] * n
就会出问题
原因点我
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)
- Python|Python 9.20