题解 | #矩阵乘法#
矩阵乘法
http://www.nowcoder.com/practice/ebe941260f8c4210aa8c17e99cbc663b
可爱的中等题该有的样子!
A m*n
B n*q
C m*q,元素为n个相乘再相加
for(int t=0;t<n;t++) c[i][j]+=a[i][t]*b[t][j];
/*HJ69 矩阵乘法 输入:第一行包含一个正整数x,代表第一个矩阵的行数 第二行包含一个正整数y,代表第一个矩阵的列数和第二个矩阵的行数 第三行包含一个正整数z,代表第二个矩阵的列数 之后x行,每行y个整数,代表第一个矩阵的值 之后y行,每行z个整数,代表第二个矩阵的值 输出:对于每组输入数据,输出x行,每行z个整数,代表两个矩阵相乘的结果 */ #include <iostream> using namespace std; int main() { int m,n,q;//1行 1列(2行) 2列 int a[100][100],b[100][100],c[100][100]={0}; cin>>m>>n>>q; for(int i=0;i<m;i++) for(int j=0;j<n;j++) { cin>>a[i][j]; } for(int i=0;i<n;i++) for(int j=0;j<q;j++) { cin>>b[i][j]; } // for(int i=0;i<m;i++) // { // for(int j=0;j<n;j++) // { // cout<<a[i][j]<<" "; // } // cout<<endl; // } // // for(int i=0;i<m;i++) // { // for(int j=0;j<q;j++) // { // cout<<b[i][j]<<" "; // } // cout<<endl; // } // for(int i=0;i<m;i++) { for(int j=0;j<q;j++) { for(int t=0;t<n;t++) c[i][j]+=a[i][t]*b[t][j]; } } for(int i=0;i<m;i++) { for(int j=0;j<q;j++) { cout<<c[i][j]<<" "; } cout<<endl; } }