题目背景: 一片𝑚×𝑛大小的区域由马路与建筑构成,𝑧 盏坐标分别在(𝑥_𝑖,𝑦_𝑖 )的路灯会照亮距离 其 1 个单位的十字区域,建筑会阻挡灯光的传播,因此需要聪明的你帮忙计算灯光照亮的 区域。 题目描述: 给出区域以及区域中灯和建筑所在的坐标,返回能够被灯照亮的地方。注意,区域左上 角坐标为 (0,0)。输入输出均以矩阵(二维列表)形式表示。 输入格式: 输入共 𝑛 + 𝑧 + 1 行。 第一行包括三个以空格分隔的整数 𝑚,𝑛,𝑧; 7 beihang_map = [0 for i in range(n)] beihang_map = [[0 for i in range(n)] for j in range(m)] beihang_map[x][y] # 访问坐标为(x,y)的元素 for i in range(m): campus_map[i] = list(map(int, input().split())) 第二行到第 𝑧+1 行,每行两个整数 𝑥𝑖,𝑦𝑖,代表第 𝑖 个路灯的位置,𝑖=1,2, ......,𝑧; 第 𝑧 + 2 行到第 𝑛 + 𝑧 + 1 行,每行 𝑚 个整数以空格隔开,数字代表区域的状况,0 表示马路,1表示建筑。 输出格式: 输出区域新的状态,共 𝑛 行,每行 𝑚 个整数,以空格隔开,代表马路和建筑的数字 不变,使用 2 表示被灯照亮的地方,路灯所在坐标也视为被照亮。
时间: 2023-05-21 20:05:48 浏览: 113
表示区域大小和路灯、建筑数量。接下来 𝑧 行,每行包括两个以空格分隔的整数 𝑥𝑖 和 𝑦𝑖,表示第 𝑖 盏路灯的坐标;最后 𝑛−𝑧 行,每行包括四个以空格分隔的整数 𝑥1,𝑦1,𝑥2,𝑦2,表示一个建筑的左下角坐标和右上角坐标。
输出格式: 输出共 𝑚 𝑛 行,以矩阵形式表示区域中被灯所照亮的部分。被照亮的地方用 1 表示,未被照亮的地方用 0 表示。
题目分析: 首先根据输入构造出初始的二维列表 beihang_map。接下来针对输入的路灯和建筑位置,对 beihang_map 进行相应的修改,将相应的区域置为 1。最后将修改后的 beihang_map 输出即可。
代码演示:
m, n, z = map(int, input().split())
beihang_map = [[0 for i in range(n)] for j in range(m)]
# 修改 beihang_map
for i in range(z):
x, y = map(int, input().split())
beihang_map[x][y] = 1
for i in range(n-z):
x1, y1, x2, y2 = map(int, input().split())
for j in range(x1, x2+1):
for k in range(y1, y2+1):
beihang_map[j][k] = 1
# 输出 beihang_map
for i in range(m):
for j in range(n):
print(beihang_map[i][j], end=' ')
print()
阅读全文