ブルーブリッジカップALGO-86トレーニング行列乗算アルゴリズム

トレーニング行列の乗算アルゴリズム  

制限時間:メモリ制限が1.0S:512.0メガバイト

 

問題の説明

  二つの入力行列は、M * S、S * Nサイズです。2つの行列乗算の出力。

 

入力形式

  、mは3つの正の整数のスペースで分離された第1行は、(以下200)N、S。
  スペースの次のm行は、整数の分離行列A(i、j)を表します。
  次の行は、各列のスペースがn整数を分離し、行列B(i、j)を示しています。

 

出力フォーマット

  n個の整数のm行は、スペースでの行列C(i、j)を乗じた出力値を分離しました。

 

サンプル入力

2 3 2
1 0 -1
1 1 -3
0 3
1 2
3 1

 

サンプル出力

-3 2
-8 2

 

先端
行列Cは、C(i、j)は行列Aのi番目の行列トレッキングBのj番目の列ベクトルの列ベクトルの内積と等しくなるm行n列でなければなりません
例えば、サンプルのC(1,1)=(1,0、 -1)*(0,1,3)= 1 * 0 + 0 * 1 +( - 1)* 3 = -3

 

#include <stdio.h>

int main()
{
    int m, s, n;
    int A[202][202] = { 0 }, B[202][202] = { 0 }, C[202][202] = { 0 };

    scanf("%d %d %d", &m, &s, &n);
    for (int i = 0; i < m; ++i)
        for (int j = 0; j < s; ++j)
            scanf("%d", &A[i][j]);
    for (int i = 0; i < s; ++i)
        for (int j = 0; j < n; ++j)
            scanf("%d", &B[i][j]);

    for (int i = 0; i < m; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            for (int k = 0; k < s; ++k)
            {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }

    for (int i = 0; i < m; ++i)
    {
        for (int j = 0; j < n; ++j)
            printf("%d ", C[i][j]);
        printf("\n");
    }

    return 0;
}

 

公開された221元の記事 ウォン称賛40 ビュー40000 +

おすすめ

転載: blog.csdn.net/liulizhi1996/article/details/103995801
おすすめ