首页 > 试题广场 >

矩阵元素相乘

[编程题]矩阵元素相乘
  • 热度指数:7992 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
A[n,m]是一个n行m列的矩阵,a[i,j]表示A的第i行j列的元素,定义x[i,j]为A的第i行和第j列除了a[i,j]之外所有元素(共n+m-2个)的乘积,即x[i,j]=a[i,1]*a[i,2]*...*a[i,j-1]*...*a[i,m]*a[1,j]*a[2,j]...*a[i-1,j]*a[i+1,j]...*a[n,j],现输入非负整形的矩阵A[n,m],求MAX(x[i,j]),即所有的x[i,j]中的最大值。

输入描述:
第一行两个整数n和m。之后n行输入矩阵,均为非负整数。


输出描述:
一行输出答案。
示例1

输入

3 5
5 1 8 5 2
1 3 10 3 3
7 8 5 5 16

输出

358400
while True:
    try:

        n , m = map(int,input().split())

        matrx = []

        for i in range(n):
            a = list(map(int,input().split()))
            matrx.append(a)

        dp = []

        for i in range(n):
            dp.append([])
            for j in range(m):
                dp[i].append(0)

        for i in range(n):
            for j in range(m):
                prod = 1
                for k in range(n):
                    for l in range(m):
                        if (k == i or l == j) and (k == i and l == j) == False:
                            prod *= matrx[k][l]
                        dp[i][j] = prod

        maxi = 0

        for i in range(n):
            for j in range(m):
                maxi = max(maxi , dp[i][j])
       
        print(maxi)

    except:
        break
发表于 2023-04-16 16:24:40 回复(0)