Bailian3256 矩阵的乘法【数学计算】

3256:矩阵的乘法
总时间限制: 1000ms 内存限制: 65536kB
描述
矩阵int a[4][3],矩阵int b[3][5]。矩阵的数据由用户输入。输出新的矩阵c=a*b. 输出格式:
c00 c01 c02 c03 c04
c10 c11 c12 c13 c14
c20 c21 c22 c23 c24
c30 c31 c32 c33 c34

矩阵乘法的计算方法 :
对于矩阵A[m][q]*B[q][n],
相乘的结果为矩阵C[m][n]且对于矩阵C中每一项都有
C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + … + A[i][q]*B[q][j]
输入
第一行为矩阵的大小,后面跟着输入矩阵
x1,y1
a00 a01 a02
a10 a11 a12
a20 a21 a22
a30 a31 a32

x2,y2
b00 b01 b02 b03 b04
b10 b11 b12 b13 b14
b20 b21 b22 b23 b24
输出
矩阵c
c00 c01 c02 c03 c04
c10 c11 c12 c13 c14
c20 c21 c22 c23 c24
c30 c31 c32 c33 c34
样例输入
4 3
1 2 3
4 5 6
7 8 9
10 11 12
3 5
7 8 9 10 11
4 5 6 7 8
1 2 3 4 5
样例输出
18 24 30 36 42
54 69 84 99 114
90 114 138 162 186
126 159 192 225 258
提示
输出格式 cout << setw(5) << c[i][j];
来源
cs10107 C++ Final Exam

问题链接Bailian3256 矩阵的乘法
问题简述:(略)
问题分析
    简单的计算问题,不解释。
    计算矩阵c时,是可以边计算边输出的。
程序说明:(略)
参考链接:(略)
题记:程序中,把计算逻辑和输入输出逻辑分开,多数情况是合理的。这样做也有可能造成代码不够简洁。

AC的C++语言程序如下:

/* Bailian3256 矩阵的乘法 */

#include <iostream>
#include <iomanip>

using namespace std;

const int N = 100;
int a[N][N], b[N][N], c[N][N];

void print(int a[][N], int x, int y)
{
    for(int i = 0; i < y; i++) {
        for(int j = 0; j < x; j++)
            cout << setw(5) << a[j][i];
        cout << endl;
    }
}

int main()
{
    int x1, x2, y1, y2;

    cin >> x1 >> y1;
    for(int i = 0; i < x1; i++)
        for(int j = 0; j < y1; j++)
            cin >> a[i][j];
    cin >> x2 >> y2;
    for(int i = 0; i < x2; i++)
        for(int j = 0; j < y2; j++)
            cin >> b[i][j];

    for(int i = 0; i < x1; i++)
        for(int j = 0; j < y2; j++) {
            c[i][j] = 0;
            for(int k = 0; k < x2; k++)
                c[i][j] += a[i][k] * b[k][j];
        }

    for(int i = 0; i < x1; i++) {
        for(int j = 0; j < y2; j++)
            cout << setw(5) << c[i][j];
        cout << endl;
    }

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章