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