-3

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;
  }

すべての助けに感謝します!

4

1 に答える 1

1

どこで増殖していますか?乗算は次のようになります。

        for(i=0;i<m;i++)
        {
            for(j=0;j<p;j++)
            {
                product[i][j]=0;
                for(k=0;k<m;k++)
                {   
                         product[i][j]+=matrix1[i][k]*matrix2[k][j];
                }
            }
        }
于 2012-08-31T09:39:57.867 に答える