您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页NOJ南邮上机 矩阵变换问题 PROB1020 Python

NOJ南邮上机 矩阵变换问题 PROB1020 Python

来源:化拓教育网

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 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)))

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务