赞
踩
矩阵A是一个N行P列的矩阵, 矩阵B是一个P行M列的矩阵。根据线性代数中学过的矩阵相乘的原理,计算矩阵A和矩阵B相乘后得到的矩阵,并输出。
C++程序要求输入输出格式如下:
输入格式:
输入共一行,有三个整数N,P,M(N,P,M≤100)。表示矩阵A是一个N×P的矩阵,矩阵B是一个P×M的矩阵。
接下来N行,每行P个整数,读入矩阵A。
再接下来P行,每行M个整数,读入矩阵B。
数据保证在输入输出数据可以用int类型存储。
输出格式:
输出N行M列的矩阵C
输入输出样例如下:
输入: 2 3 4 输出:6 6 6 6
1 2 3 3 3 3 3
1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
对于本题直接考虑暴力解,利用三层for循环计算两个矩阵中两两元素相乘的结果,累加后存入一个一维数组,输出时换行输出,即可打印出N行M列矩阵。
#include<bits/stdc++.h> using namespace std; //矩阵乘法 int main(){ int N,P,M; cin>>N>>P>>M; int a_matrix[N][P]; int b_matrix[P][M]; int c_matrix[100*100]; for(int i=0;i<N;i++){ //输入矩阵A for(int j=0;j<P;j++){ cin>>a_matrix[i][j]; } } for(int i=0;i<P;i++){ //输入矩阵B for(int j=0;j<M;j++){ cin>>b_matrix[i][j]; } } int index=0; for(int a=0;a<N;a++){ //a为A矩阵的行标 for(int b=0;b<M;b++){ //b为B矩阵的列标 for(int c=0;c<P;c++){ //c为B矩阵的行标、A矩阵的列标 c_matrix[index]+=a_matrix[a][c]*b_matrix[c][b]; } index++; } } for (int i = 1; i <= N * M; i++)//输出C矩阵 { cout << c_matrix[i - 1] << ' '; if (i % M == 0)//每输出一行,换行 { cout << endl; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。