首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

NYOJ 623 A*B Problem II:矩陣乘法模擬實現

     編輯:C++ 入門

問題描述

多測試用例,每組給定 m,n,k (≤50) 及矩陣 A (m×n)、B (n×k),輸出乘積 C = A×B (m×k)。輸入以 0 0 0 結束。

矩陣乘法定義

C[i][j] = Σ_{s=0}^{n-1} A[i][s] * B[s][j]

代碼實現

#include <stdio.h>

int a[55][55], b[55][55], c[55][55];

int main() {
    int m, n, k;
    while (scanf("%d%d%d", &m, &n, &k), m || n || k) {
        // 讀入矩陣 A
        for (int i = 0; i < m; ++i)
            for (int j = 0; j < n; ++j)
                scanf("%d", &a[i][j]);
        // 讀入矩陣 B
        for (int i = 0; i < n; ++i)
            for (int j = 0; j < k; ++j)
                scanf("%d", &b[i][j]);
        // 矩陣乘法
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < k; ++j) {
                int sum = 0;
                for (int s = 0; s < n; ++s)
                    sum += a[i][s] * b[s][j];
                c[i][j] = sum;
            }
        }
        // 輸出結果
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < k; ++j)
                printf("%d ", c[i][j]);
            printf("\n");
        }
    }
    return 0;
}

注意事項

  • 數組大小開 55 足夠應對 ≤50
  • 三重循環順序 i-j-s 或 i-s-j 均可,數據量小無需優化緩存
  • 輸入結束條件:m=n=k=0
  • 每行輸出結尾有空格,題目接受
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved