我必须输入三个正整数 n、m 和 p。然后输入两个矩阵。第一个是(行)乘 m(列)矩阵。第二个是am(行)乘p(列)矩阵,然后输出矩阵乘积(应该是n行乘p列)并使用堆内存来存储矩阵。这是我到目前为止所拥有的,
long double adjProduct(int n, int m, int ** matrix)
{
int j, k, l;
long double product = 0.0;
long double temp = 0.0;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if((i + (1*(m - 1))) < n)
{
temp = 1;
for(k = 0; k < m; k++)
temp *= matrix[i + k][j];
if(temp > product)
product = temp;
}
if(j + (1*(m-1)) < n)
{
temp = 1;
for(k = 0; k < m; k++)
temp *= matrix[i][j + k];
if(temp > product)
product = temp;
}
if((i + (1*(m-1)) < n) && (j + (1*(m-1)) < n))
{
temp = 1;
for(k = 0; k < m; k++)
temp *= matrix[i + k][j + k];
if(temp > product)
product = temp;
}
if((i + (1*(m-1)) < n) && (j - (1*(m-1)) >= 0))
{
temp = 1;
for(k = 0; k < m; k++)
temp *= matrix[i + k][j - k];
if(temp > product)
product = temp;
}
}
}
return product;
}
main(){
int ** matrix;
int n = 0;
int m = 0;
int i, j;
scanf("%d %d", &n, &m);
matrix = (int **)malloc(sizeof(int *)*n);
if(matrix == NULL)
exit(0);
for(i = 0; i < n; i++)
{
matrix[i] = (int*)malloc(sizeof(int)*n);
if(matrix[i] == NULL)
exit(0);
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
scanf("%d", &matrix[i][j]);
}
printf("%.0Lf", adjProduct(n, m, matrix));
for(i = 0; i < n; i++)
free(matrix[i]);
free(matrix);
matrix = NULL;
}
感谢所有帮助!