題目描述: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; } }}
新聞熱點
疑難解答
圖片精選