zoukankan      html  css  js  c++  java
  • L1-048 矩阵A乘以B (15分)

    给定两个矩阵AB,要求你计算它们的乘积矩阵 (AB)。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A(R_a) 行、(C_a) 列,B(R_b) 行、(C_b) 列,则只有 (C_b)(R_b)相等时,两个矩阵才能相乘。

    输入格式:

    输入先后给出两个矩阵AB。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的RC都是正数,并且所有整数的绝对值不超过100。

    输出格式:

    若输入的两个矩阵的规模是匹配的,则按照输入的格式输出乘积矩阵A**B,否则输出Error: Ca != Rb,其中CaA的列数,RbB的行数。

    输入样例1:

    2 3
    1 2 3
    4 5 6
    3 4
    7 8 9 0
    -1 -2 -3 -4
    5 6 7 8
    

    输出样例1:

    2 4
    20 22 24 16
    53 58 63 28
    

    输入样例2:

    3 2
    38 26
    43 -5
    0 17
    3 2
    -11 57
    99 68
    81 72
    

    输出样例2:

    Error: 2 != 3
    

    代码:

    // Author : RioTian
    // Time : 20/11/02
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define maxn 105
    int a, b, x, y, s[maxn][maxn], t[maxn][maxn], ans[maxn][maxn];
    int main() {
        cin >> a >> b;
        for (int i = 1; i <= a; i++)
            for (int j = 1; j <= b; j++) cin >> s[i][j];
        cin >> x >> y;
        for (int i = 1; i <= x; i++)
            for (int j = 1; j <= y; j++) cin >> t[i][j];
        if (b != x) {
            cout << "Error: " << b << " != " << x << endl;
            return 0;
        }
        cout << a << ' ' << y << endl;
        for (int k = 1; k <= b; k++)
            for (int i = 1; i <= a; i++)
                for (int j = 1; j <= y; j++) ans[i][j] += s[i][k] * t[k][j];
        for (int i = 1; i <= a; i++) {
            for (int j = 1; j < y; j++) cout << ans[i][j] << ' ';
            cout << ans[i][y] << endl;
        }
        return 0;
    }
    

    The desire of his soul is the prophecy of his fate
    你灵魂的欲望,是你命运的先知。

  • 相关阅读:
    三种数据解析方式
    requests模块相关用法
    urllib模块基本用法
    django复习题
    scrapy框架编写向redis数据库中存储数据的相关代码时报错解决办法
    并发编程练习题
    网络编程 socket 开发练习题
    面向对象编程设计练习题(2)
    pytest-fixtured
    Python 删除某一目录下的所有文件或文件夹
  • 原文地址:https://www.cnblogs.com/RioTian/p/13916933.html
Copyright © 2011-2022 走看看