A[n,m]是一个n行m列的矩阵。a[i,j]表示A的第i行j列的元素,定义x[i,j]为A的第i行和第j列除了a[i,j]外所有元素(共 n+m-2个)的乘积
现输入非负整形的矩阵 A[n,m],求MAX(x[i][j])即所有的x[i][j]中的最大值。
输入描述:第一行两个整数n和m。之后n行输入矩阵,均为非负整数。
输出描述:一行输出答案。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int a,b;
scanf("%d%d",&a,&b);
int **p=(int**)malloc(sizeof(int)*a);
for (int i=0; i<a; i++)
{
p[i]=(int*)malloc(sizeof(int)*b);
for (int j=0; j<b; j++)
{
scanf("%d",&p[i][j]);
}
}
int **tmp=(int**)malloc(sizeof(int)*a);
for (int i=0; i<a; i++)
{
tmp[i]=(int*)malloc(sizeof(int)*b);
for (int j=0; j<b; j++)
{
tmp[i][j]=1;
}
}
for (int i=0; i<a; i++)
{
for (int j=0; j<b; j++)
{
for (int m=0; m<a; m++)
{
for (int n=0; n<b; n++)
{
if(i==m||j==n)
{
if(!(i==m&&j==n))
{
tmp[m][n]*=p[i][j];
}
}
}
}
}
}
int max=tmp[0][0];
for (int i=0; i<a; i++)
{
for (int j=0; j<b; j++)
{
if(max<tmp[i][j])
{
max=tmp[i][j];
}
}
}
printf("%d\n",max);
return 0;
}