首页 > 试题广场 >

矩阵最大值

[编程题]矩阵最大值
  • 热度指数:9379 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
编写一个程序输入一个mXn的矩阵存储并输出,并且求出每行的最大值和每行的总和。 要求把每行总和放入每行最大值的位置,如果有多个最大值,取下标值最小的那一个作为最大值。 最后将结果矩阵输出。

输入描述:
输入的第一行包括两个整数m和n(1<=m,n<=100),分别代表矩阵的行和列的维数。
接下来的m行每行有n个数,代表矩阵的元素。


输出描述:
可能有多组测试数据,对于每组数据,输出按题目要求执行后的矩阵。
示例1

输入

3 3
1 1 1
1 1 1
1 1 1
3 3
3 2 3
2 3 2
3 2 3

输出

3 1 1
3 1 1
3 1 1
8 2 3
2 7 2
8 2 3

def f():
    m, n = map(int, input().split(' '))
    
    for i in range(m):
        each = list(map(int, input().split(' ')))    
        max_id = each.index(max(each))
        each[max_id] = sum(each)
        print(' '.join(map(str, each)))

while True:
    try:
        f()  
    except:
        break


编辑于 2022-05-21 12:41:31 回复(0)
while True:
    try:
       m,n=map(int,input().split())
       ls=[]#构造二维数组
       lt=[]#存储每行的和
       z=[]#存储每行最大值
       for i in range(m):
           x=list(map(int,input().split()))
           lt.append(sum(x))
           z.append(max(x))
           ls.append(x)
       for i in range(m):
           for j in range(n):
                if ls[i][j]==z[i]:#找到每行最大值的位置
                    ls[i][j]=lt[i]#在最大值位置替换为对应行的和
                    break
       for i in range(m):
            print(*ls[i])
    except:
        break

发表于 2020-07-31 14:13:14 回复(0)

python solution:

while True:
    try:
        row,col=map(int,input().split())
        for i in range(row):
            a=list(map(int,input().split()))
            a[a.index(max(a))]=sum(a)
            print(" ".join(map(str,a)))



    except:
        break
发表于 2017-10-04 11:10:52 回复(1)
try:
    while 1:
        m, n = map(int, raw_input().split())
        matrix = [map(int, raw_input().split()) for i in xrange(m)]
        for j in xrange(m):
            MaxIndex = matrix[j].index(max(matrix[j]))
            Sum = sum(matrix[j])
            matrix[j][MaxIndex] = Sum
            print ' '.join(map(str, matrix[j]))
except:
    pass

发表于 2016-12-23 12:29:44 回复(0)