n、m、p の 3 つの正の整数を入力する必要があります。次に、2 つの行列を入力します。1 つ目は (行) x m (列) の行列です。2 つ目は、am (行) x p (列) の行列で、行列の積 (n 行 x 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;
}
すべての助けに感謝します!