互联网收集的od练习题, 记录解题过程. 因为无运行环境.暂时无法验证正确性,仅供参考
题目描述:
某长方形停车场,每个车位上方都有对应监控器,当且仅当在当前车位或者前后左右四个方向任意一个车位范围停车时,监控器才需要打开;
给出某一时刻停车场的停车分布,请统计最少需要打开多少个监控器
输入:
3 3
0 0 0
0 1 0
0 0 0
输出:
5
directions = [
lambda x, y: (x, y - 1),
lambda x, y: (x, y + 1),
lambda x, y: (x + 1, y),
lambda x, y: (x - 1, y),
]
def solution():
matrix = []
m, n = list(map(int, input().split()))
for _ in range(m):
matrix.append(list(map(int, input().split())))
count = 0
# 遍历停车场每个车位
for i in range(m):
for j in range(n):
if matrix[i][j] == 0: # 当车位未停车时
for direction in directions: # 遍历车位的四个方向,若遇到1则此车位控制器打开,并结束其他方向遍历
x, y = direction(i, j)
if 0 <= x < m and 0 <= y < n and matrix[x][y] == 1:
count += 1
break
elif matrix[i][j] == 1:
count += 1
print(count)
if __name__ == '__main__':
solution()
1467

被折叠的 条评论
为什么被折叠?



