题目描述:A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。
输入描述:
第一个矩阵的行数
第一个矩阵的列数(也是第二个矩阵的行数)
第二个矩阵的列数
第一个矩阵的值
第二个矩阵的值
输出描述:输出两个矩阵相乘的结果
输入例子:
2
2
2
3 8 8 0
9 0 18 9
输出例子:171 72
72 0
算法实现:#include<iostream>#include<vector>using namespace std;//************************************************ // * Author: 赵志乾 // * Date: 2017-2-19 // * Declaration: All Rigths Reserved !!! //************************************************void InPut(vector<vector<int> >&ret,int row,int col);void OutPut(vector<vector<int> >&ret);void Multiply(vector<vector<int> >&A,vector<vector<int> >&B,vector<vector<int> >&ret);int main(){ int Arow,Brow,Acol,Bcol; cin>>Arow>>Acol>>Bcol; Brow=Acol; vector<vector<int> >A(Arow,vector<int>(Acol,0)); vector<vector<int> >B(Brow,vector<int>(Bcol,0)); InPut(A,Arow,Acol); InPut(B,Brow,Bcol); vector<vector<int> >ret(Arow,vector<int>(Bcol,0)); Multiply(A,B,ret); OutPut(ret); return 0;}void InPut(vector<vector<int> >&ret,int row,int col){ for(int i=0;i<row;i++) { for(int j=0;j<col;j++) cin>>ret[i][j]; }}void OutPut(vector<vector<int> >&ret){ for(int i=0;i<ret.size();i++) { for(int j=0;j<ret[0].size()-1;j++) cout<<ret[i][j]<<' '; cout<<ret[i][ret[0].size()-1]<<endl; }}void Multiply(vector<vector<int> >&A,vector<vector<int> >&B,vector<vector<int> >&ret){ for(int i=0;i<ret.size();i++) { for(int j=0;j<ret[0].size();j++) { int sum=0; for(int k=0;k<A[0].size();k++) { sum+=A[i][k]*B[k][j]; } ret[i][j]=sum; } }}
新闻热点
疑难解答
图片精选