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行输入矩阵,均为非负整数。
一行输出答案。
3 5 5 1 8 5 2 1 3 10 3 3 7 8 5 5 16
358400
def fun(A, n, m): a = [[0 for j in range(m)] for i in range(n)] for i in range(n): # row for j in range(m): # col sum = 1 # discuss col for x in range(m): if x == j: continue sum *= A[i][x] # discuss row for y in range(n): if y == i: continue sum *= A[y][j] a[i][j] = sum return max([max(x) for x in a]) while True: try: n,m = list(map(int,input().split())) except: break data = [] for i in range(n): data.append(list(map(int,input().split()))) print(fun(data,n,m))
while True: try: n,m=map(int,input().strip().split(' ')) #print(n,m) arr=[] for i in range(n): arr.append(list(map(int,input().strip().split(' ')))) #print(arr) list1=[] list2=[] for i in range(n): sum1=1 for j in range(m): sum1=sum1*arr[i][j] list1.append(sum1) for j in range(m): sum2=1 for i in range(n): sum2=sum2*arr[i][j] list2.append(sum2) max_num=-float('inf') for i in range(n): for j in range(m): if arr[i][j]!=0: num=(list1[i]*list2[j]//(arr[i][j])**2) else: num1=1 num2=1 for x in range(i): num1=num1*arr[x][j] for x in range(i+1,n): num1=num1*arr[x][j] for y in range(j): num2=num2*arr[i][y] for y in range(j+1,m): num2=num2*arr[i][y] num=num1*num2 if max_num<num: max_num=num print(max_num) except: break
from functools import reduce while 1: try: n,m=list(map(int,input().split())) A=[list(map(int,input().split())) for i in range(n)] x=[[1 for j in range(m)] for i in range(n)] B=[list(x) for x in list(zip(*A))]#矩阵A的转置 ans=0 for i in range(n): for j in range(m): row=A[i][:j]+A[i][j+1:]#去掉A[i][j]后的行和列 col=B[j][:i]+B[j][i+1:] tmp=1 if row and col:#需要考虑row、col是否为空的状况 tmp=reduce(lambda x,y:x * y,row)*reduce(lambda x,y:x * y,col)#第i行与第j列的乘积 elif row and not col: tmp=reduce(lambda x,y:x * y,row) elif not row and col: tmp=reduce(lambda x,y:x * y,col) ans=max(tmp,ans) print(int(ans)) except: break