藍橋杯 ADV-208 演算法提高 矩陣相乘
阿新 • • 發佈:2019-01-08
問題描述
小明最近在為線性代數而頭疼,線性代數確實很抽象(也很無聊),可惜他的老師正在講這矩陣乘法這一段內容。
當然,小明上課打瞌睡也沒問題,但線性代數的習題可是很可怕的。
小明希望你來幫他完成這個任務。
現在給你一個ai行aj列的矩陣和一個bi行bj列的矩陣,
要你求出他們相乘的積(當然也是矩陣)。
(輸入資料保證aj=bi,不需要判斷)
輸入格式
輸入檔案共有ai+bi+2行,並且輸入的所有數為整數(long long範圍內)。
第1行:ai 和 aj
第2~ai+2行:矩陣a的所有元素
第ai+3行:bi 和 bj
第ai+3~ai+bi+3行:矩陣b的所有元素
輸出格式
輸出矩陣a和矩陣b的積(矩陣c)
(ai行bj列)
樣例輸入
2 2
12 23
45 56
2 2
78 89
45 56
樣例輸出
1971 2356
6030 7141
#include <iostream> #include <vector> using namespace std; int main() { int a, b; cin >> a >> b; vector<vector<long long int> > A(a, vector<long long int>(b)); for(int i = 0; i < a; i++) for(int j = 0; j < b; j++) cin >> A[i][j]; int c, d; cin >> c >> d; vector<vector<long long int> > B(c, vector<long long int>(d)); for(int i = 0; i < c; i++) for(int j = 0; j < d; j++) cin >> B[i][j]; vector<vector<long long int> > C(a, vector<long long int>(d)); for(int i = 0; i < a; i++) { for(int j = 0; j < d; j++) { C[i][j] = 0; for(int k = 0; k < b; k++) C[i][j] += A[i][k] + B[k][j]; cout << C[i][j] << " "; } cout << endl; } return 0; }