公司網(wǎng)站設(shè)計欣賞關(guān)鍵詞優(yōu)化排名首頁
【題目描述】
矩陣 A
規(guī)模為 n×m
,矩陣 B
規(guī)模為 m×p
,現(xiàn)需要你求 A×B
。
矩陣相乘的定義:n×m
的矩陣與 m×p
的矩陣相乘變成 n×p
的矩陣,令 aik
為矩陣 A
中的元素,bkj
為矩陣 B
中的元素,則相乘所得矩陣 C
中的元素
cij=∑k=1maikbkj(看不懂的看代碼里面有簡易得定義)
具體可見樣例。
【輸入】
第一行兩個數(shù) n,m
;
接下來 n
行 m
列描述一個矩陣 A
;
接下來一行輸入 p
;
接下來 m
行 p
列描述一個矩陣 B
。
【輸出】
輸出矩陣 A
與矩陣 B
相乘所得的矩陣 C
。
【輸入樣例】
2 3
1 2 3
3 2 1
2
1 1
2 2
3 3
【輸出樣例】
14 14
10 10
【提示】
樣例解釋
[14=1×1+2×2+3×310=3×1+2×2+1×314=1×1+2×2+3×310=3×1+2×2+1×3]
數(shù)據(jù)范圍與提示:
對于全部數(shù)據(jù),1≤n,m,p≤100,?10000≤aij,bij≤10000
。
【思路】公式法!
#include<bits/stdc++.h>
using namespace std;
int a[10050][10050],b[10050][10050];//定義二個矩陣 。 另一個矩陣為輸出矩陣也是結(jié)果,后面在算的時候就能輸出所以不用定義
int main()
{
int n,m,p;//n,m為a矩陣的行與列,m,p為b矩陣的行與列,n,p為輸出矩陣的行與列
cin>>n>>m; //輸出不必多言
for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>a[i][j];}
}
cin>>p;
for(int i=0;i<m;i++){for(int j=0;j<p;j++){cin>>b[i][j];}
}
for(int i=0;i<n;i++){//c矩陣為n行p列 for(int j=0;j<p;j++){//c[i][j]為a[i][]行各數(shù)與b[][j]列各數(shù)相乘 int ans=0;for(int k=0;k<m;k++){//因為a矩陣和b矩陣公共常(一定,不給樣例就能確定的)度為m ans+=a[i][k]*b[k][j];//根據(jù)第20行提供的定義直接算 } cout<<ans<<" ";}cout<<endl;
}
return 0;
}
完結(jié)撒花!