矩阵相乘

作者: 逍遥_9353 | 来源:发表于2018-04-20 11:44 被阅读25次

    /*矩阵相乘

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

    相关文章

      网友评论

        本文标题:矩阵相乘

        本文链接:https://www.haomeiwen.com/subject/ohuakftx.html