PROB1020 矩阵变换问题
描述:
给定一个 n×m的矩阵,对于 初始矩阵 中所有值为 1 的元素,重置其 所在行列 的所有元素为 0,最后输出整个修改后的矩阵。
输入:
输入共包含 1+n 行。
第一行包两个整数 n 和 m, 分别表示矩阵的长和宽,题目保证 2≤n,m≤700 且 4≤n×m≤180000。
接下来 n 行,每行包含 m 个整数,第 i 行第 j 个整数表示矩阵中坐标 (i,j)的值 Ai,j,题目保证 0≤Ai,j≤1e8。
输出:
输出共包含 n 行,每行包含空格分隔 m 个整数。
第 i 行第 j 个整数表示修改后的矩阵中坐标 (i,j)的值 Ai,j。
请注意输出中每行行末最后一个数字后面紧跟换行符,不能包含空格。
样例输入:
3 3 3 4 5 0 1 2 6 7 8
样例输出:
3 0 5 0 0 0 6 0 8
样例输入:
3 4 1 2 3 1 4 5 6 7 8 9 10 11
样例输出:
0 0 0 0 0 5 6 0 0 9 10 0
基于python实现的代码:
def change_matrix(n, m, matrix):
rows_to_zero = set()
cols_to_zero = set()
for i in range(n):
for j in range(m):
if matrix[i][j] == 1:
rows_to_zero.add(i)
cols_to_zero.add(j)
reset_matrix = [[0 if i in rows_to_zero or j in cols_to_zero else matrix[i][j] for j in range(m)] for i in range(n)]
return reset_matrix
n, m = map(int, input().strip().split())
matrix = [[int(cell) for cell in input().strip().split()] for _ in range(n)]
modified_matrix = change_matrix(n, m, matrix)
for row in modified_matrix:
print(' '.join(map(str, row)))
标签:PROB1020,输出,matrix,NOJ,南邮,矩阵,range,样例,zero
From: https://blog.csdn.net/m0_63593938/article/details/136883645