/*矩阵相乘
题目描述:两个矩阵的乘法仅当第一个矩阵A的行数和另一个
矩阵B的列数相等时才能定义。例如,如果A是m*n
的矩阵,B是n*p的矩阵,他们的乘积C是一个m*p
的矩阵,其中的元素1<=i<=m,1<=j<=p,请编程实
现矩阵乘法,并考虑当矩阵规模比较大时的优化方
法。
A B C
1 2 0 1 0 1
* =
3 4 0 0 0 3
*/
/* 思路:A、B、C是三个相同维数的二维数组,A的行数与B的列数相
等时,所在值相乘得到C所在行列的值,因此先用双重循环
输入二维数组,在通过初始化循环得到相乘的值保存下来,
输出新的矩阵C.
*/
#include<iostream>
using namespace std;
int main()
{
//定义三个二维数组,相同维数n,循环次数i,j,k
int matrixa[100][100],matrixb[100][100],matrixc[100][100],n,i,j,k;
cin>>n;
//输入两个二维数组
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>matrixa[i][j];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>matrixb[i][j];
//得到新的二维数组
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
matrixc[i][j]=0;//初始化为0
for(int k=0;k<n;k++)
{
matrixc[i][j]+=matrixa[i][k]*matrixb[k][j];
}
}
}
cout<<"\n\n";
//输出新的二维数组
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<matrixc[i][j];
}
cout<<"\n";
}
return 0;
}
网友评论