阿摩線上測驗 登入

申論題資訊

試卷:110年 - 110 中華郵政股份有限公司_職階人員甄試試題_營運職/數據分析:數據分析及演算法運用#106534
科目:數據分析
年份:110年
排序:0

申論題內容

第四題: 下列是 A 與 B 兩個矩陣的乘法,左邊是 2x3 矩陣,右邊是 3x2 矩陣,相乘的結果是 C, 為 2x2 矩陣。
62186e9ba041f.jpg
計算方法是左邊矩陣的「列」乘以右邊矩陣的「行」,並加總起來,亦即:
62186eae06c30.jpg
 若以陣列來儲存矩陣資料,請依照【表四】C/C++語言的格式,寫出一個 mxn 矩陣乘以 nxp 矩陣的演算法,亦即62186ebc5f852.jpg。【25 分】
62186ec23eb1e.jpg

詳解 (共 1 筆)

詳解 提供者:hchungw

前兩個 for 循環遍歷 A 的行(i)和 B 的列(j),以計算結果矩陣 C 的每個元素 c[i][j]。
第三個 for 循環(在前兩個內部)遍歷 A 的行和 B 的列的元素(k),將它們相乘並將結果相加,以獲得 c[i][j] 的值。
語句 c[i][j] = 0; 在求和過程開始前將 C 的當前元素初始化為零。

void Matrix_Multiplication(int m, int n, int p, int a[m][n], int b[n][p], int c[m][p]) {
    for(int i = 0; i < m; i++) {
        for(int j = 0; j < p; j++) {
            c[i][j] = 0;  // 初始化元素為 0
            for(int k = 0; k < n; k++) {
                c[i][j] += a[i][k] * b[k][j];
            }
        }
    }
}