程序书海码农的世界程序员

矩阵相乘

2018-04-20  本文已影响25人  逍遥_9353

/*矩阵相乘

  题目描述:两个矩阵的乘法仅当第一个矩阵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;

上一篇下一篇

猜你喜欢

热点阅读