当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

数据结构题集--数组(二维数组)

    设计一个矩阵相乘的程序
    假设有

       1  5  7  3            3  9  1  4  1  4
    A= 3  6  3  9         B= 5  6  7  9  0  3
       1  2  8  7            3  2  7  2  5  6
       0  3  1  9            9  7  4  7  8  0
       3  2  5  4

    求出A*B的矩阵
    程序构思:
    我们所知的矩阵乘法运算的算式如下:

    Cij = Aik X Bkj   的k从1到 n 的和,那么可以用一个3层循环来运算此算式:

    C(1,1)=A(1,1)*B(1,1)+A(1,2)*B(2,1)+A(1,3)*B(3,1)+A(1,4)*B(4,1)
          =(1*3)+(5*5)+(7*3)+(3*9)
          =3+25+21+27
          =76
    同理
    C(1,2)=A(1,1)*B(1,2)+A(1,2)*B(2,2)+A(1,3)*B(3,2)+A(1,4)*B(2,2)
          =(1*9)+(5*6)+(7*2)+(3*7)
          =9+30+14+21
          =74
    依此类推,我们可以求得矩阵A与矩阵B的矩阵乘积。
    void main(void)
    {
        int matrixa[5][4]={1,5,7,3,
                           3,6,3,9,
                           1,2,8,7,
                           0,3,1,9,
                           3,2,5,4};
        int matrixb[4][6]={3,9,1,4,1,4,
                           5,6,7,9,0,3,
                           3,2,7,2,5,6,
                           9,7,4,7,8,0};
        int matrixc[5][6];
        int i,j,k;
        for(i=0;i<5;i++)
            for(j=0;j<6;j++)
            {
                matrixc[i][j]=0;
                for(k=0;k<4;k++)
                    matrixc[i][j]+=matrixa[i][k]*matrixb[k][j];

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接