• XTU-OJ 1146-矩阵乘法


    大家可能也发现我是实时更新的,所以大家可以多点赞,觉得不懂的或者有些建议请留言评论,多给我些反馈,可以让我更好的编写博客内容。

    题目描述

    给你两个矩阵A(n*k),B(k*m),请求A*B。

    输入

    第一行是一个整数K,表示样例的个数。 每个样例包含两个矩阵A和B。 每个矩阵的第一行是两个整数n,m,(1≤n,m≤10)表示矩阵的行和列 以后的n行,每行m个整数,每个整数的绝对值不超过100。输入保证A和B是可乘的。

    输出

    输出每个样例的结果矩阵,矩阵的整数之间用一个空格隔开,行尾无空格。

    样例输入
    2
    2 2
    1 1
    1 1
    2 1
    1
    1
    2 2
    1 1
    1 1
    2 2
    1 1
    1 0
     
    
    样例输出
    2
    2
    2 1
    2 1
    

    解题思路:本题就是在于 矩阵运算,其他的没什么大问题,细节注意 两矩阵相乘,新的行列是左矩阵的和右矩阵的组成的。所以注意 20、 22 、25 行的for循环的判断值。

    AC代码:

    1. #include
    2. int K,n1,m1,n2,m2;
    3. int A[11][11],B[11][11],C[11][11];
    4. int main()
    5. {
    6. scanf("%d",&K);
    7. while ( K --)
    8. {
    9. scanf("%d %d",&n1,&m1); // 输入
    10. for (int i = 1; i <= n1; i ++)
    11. for (int j = 1; j <= m1; j ++)
    12. scanf("%d",&A[i][j]);
    13. scanf("%d %d",&n2,&m2);
    14. for (int i = 1; i <= n2; i ++)
    15. for (int j = 1; j <= m2; j ++)
    16. scanf("%d",&B[i][j]);
    17. for (int i = 1; i <= n1; i ++) // 矩阵相乘
    18. {
    19. for (int j = 1; j <= m2; j ++)
    20. {
    21. int t = 0;
    22. for (int k = 1; k <= m1; k ++)
    23. t += (A[i][k]*B[k][j]);
    24. C[i][j] = t;
    25. }
    26. }
    27. for (int i = 1; i <= n1; i ++) // 输出
    28. {
    29. printf("%d",C[i][1]);
    30. for (int j = 2; j <= m2; j ++)
    31. printf(" %d",C[i][j]);
    32. puts("");
    33. }
    34. }
    35. return 0;
    36. }

  • 相关阅读:
    牛客多校2 - Ancestor(LCA,前后缀)
    宇宙数字宣布2023年上半年盈利翻倍,数字货币挖矿业务持续增长
    openMMLab的mmcv和mmdet、mmdet3d、mmseg版本对应关系
    记录数据库备份与检查脚本
    八大排序总结篇
    题解——二维费用背包问题(宠物小精灵之收服、潜水员)
    lodash源码
    C++指针笔记
    Linux常见指令
    鼠标和滚轮事件
  • 原文地址:https://blog.csdn.net/Jay_is_Chou/article/details/133847440