矩陣(Matrix),是由數字或其他類型的數據按行與列排列而成的的矩形數組,通常用 mXn 來表示,其中m是行數,n是列數,矩陣的元素通常用 a(i, j) 來表示,i為行索引,j為列索引,而矩陣常見的運算包含加減法、乘法和轉置,多用於表示和數據處理,尤其是數據分析和機器學習等領域當中。
範例說明 :
題目 : 編寫一個C++程式,實現一個函數來計算兩個矩陣的乘積,要求函數接受兩個矩陣及其維度作為參數,並回傳乘積矩陣。輸入的內容包含第一個矩陣的維度為 mXn、第二個矩陣的維度為 nXp 和兩個矩陣的元素,輸出的結果為乘積矩陣的維度 mXp及其元素。
Step 1 : 讀取兩個矩陣的維度及元素
Step 2 : 利用迴圈計算矩陣乘積
Step 3 : 將結果矩陣的維度和元素輸出
vector<vector<int>> multiplyMatrices(const vector<vector<int>>& A, const vector<vector<int>>& B) {
int m = A.size();
int n = A[0].size();
int p = B[0].size();
vector<vector<int>> C(m, vector<int>(p, 0));
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
for (int k = 0; k < n; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
return C;
}
int main() {
int m,
// 輸入第一個矩陣的維度
cin >> m >> n;
vector<vector<int>> A(m, vector<int>(n));
// 輸入第一個矩陣的元素
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> A[i][j];
}
}
int nB;
// 輸入第二個矩陣的維度
cin >> nB >> p;
vector<vector<int>> B(nB, vector<int>(p));
// 輸入第二個矩陣的元素
for (int i = 0; i < nB; i++) {
for (int j = 0; j < p; j++) {
cin >> B[i][j];
}
}
//計算乘積矩陣
vector<vector<int>> C = multiplyMatrices(A, B);
//輸出乘積矩陣的維度和元素
cout << m << " " << p << endl;
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
cout << C[i][j] << " ";
}
cout << endl;
}
return 0;
}
優點 :
缺點 :