PTA-感染人数
2023-12-28 23:46:55
设某住宿区域是一个n×n的方阵,方阵中的每个小方格为一个房间,房间里可能住一个人,也可能空着。第一天,某些房间中住着的人得了一种高传染性的流感,以后每一天,得流感的人会使其邻居(住在其上、下、左、右方向存在的房间里面的人)传染上流感,请问:第m天总共有多少人得流感?
输入格式:
第一行输入两个整数n,m(1<n≤20,1≤m≤100),含义如上述;接着输入n行,每行n个字符,表示住宿区域第一天的房间情况,其中,@
表示当天该房间住着得流感的人,.
表示该房间住着健康的人,#
表示该房间是空的。
输出格式:
输出一个整数,表示第m天得了流感的人数。
输入样例1:
5 3
#....
.....
...##
.#.@.
@.#..
输出样例1:
10
输入样例2:
5 4
....#
.#.@.
.#@..
#....
.....
输出样例2:
16
Python:
def count_infected_people(n, m, room_layout):
def get_neighbors(i, j):
neighbors = [(i-1, j), (i+1, j), (i, j-1), (i, j+1)]
valid_neighbors = [(x, y) for x, y in neighbors if 0 <= x < n and 0 <= y < n]
return valid_neighbors
def update_layout(layout):
new_layout = [row[:] for row in layout]
for i in range(n):
for j in range(n):
if layout[i][j] == '@':
neighbors = get_neighbors(i, j)
for x, y in neighbors:
if layout[x][y] == '.':
new_layout[x][y] = '@'
return new_layout
for _ in range(m-1):
room_layout = update_layout(room_layout)
return sum(row.count('@') for row in room_layout)
# 读取输入
n, m = map(int, input().split())
room_layout = [list(input().strip()) for _ in range(n)]
# 计算结果并输出
result = count_infected_people(n, m, room_layout)
print(result)
?
结果截图:
?
文章来源:https://blog.csdn.net/m0_74316503/article/details/135279754
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!