2015.网研院.Problem B.矩阵连乘

Love The Way You Lie 2023-07-17 15:44 26阅读 0赞

题目描述
给你3个5*5的矩阵A、B、C,让你求他们依次相乘的结果矩阵D,D=ABC,

输入描述
有多组数据,第一行是数据总数。
每组数据输入三个5*5的矩阵,每个数的取值范围是[0,10]

输出描述
输出一个矩阵D即答案
输入:

  1. 1
  2. 1 2 3 4 5
  3. 6 5 8 9 7
  4. 6 5 7 8 4
  5. 5 6 3 2 1
  6. 2 3 1 4 5
  7. 1 2 3 4 5
  8. 3 2 1 4 5
  9. 6 5 4 1 2
  10. 6 2 1 4 5
  11. 3 2 1 3 4
  12. 7 8 9 6 3
  13. 1 2 4 5 6
  14. 3 2 1 4 5
  15. 3 2 1 8 6
  16. 3 0 0 1 0

输出:

  1. 886 734 804 1112 832
  2. 2074 1700 1852 2634 2005
  3. 1791 1462 1589 2280 1740
  4. 942 722 770 1234 954
  5. 848 662 710 1072 788
  6. #include<bits/stdc++.h>
  7. using namespace std;
  8. int main() {
  9. int T,sum;
  10. int a[5][5],b[5][5],c[5][5];
  11. int tmp[5][5],ans[5][5];
  12. cin >> T;
  13. while(T--) {
  14. for(int i=0; i<5; i++)
  15. for(int j=0; j<5; j++) {
  16. cin>>a[i][j];
  17. }
  18. for(int i=0; i<5; i++)
  19. for(int j=0; j<5; j++) {
  20. cin >>b[i][j];
  21. }
  22. for(int i=0; i<5; i++)
  23. for(int j=0; j<5; j++) {
  24. cin >>c[i][j];
  25. }
  26. for(int i=0; i<5; i++) {
  27. for(int j=0; j<5; j++) {
  28. sum=0;
  29. for(int k=0; k<5; k++) {
  30. sum+=a[i][k]*b[k][j];
  31. }
  32. tmp[i][j]=sum;
  33. }
  34. }
  35. for(int i=0; i<5; i++) {
  36. for(int j=0; j<5; j++) {
  37. sum=0;
  38. for(int k=0; k<5; k++) {
  39. sum+=tmp[i][k]*c[k][j];
  40. }
  41. ans[i][j]=sum;
  42. }
  43. }
  44. for(int i=0; i<5; i++) {
  45. int flag=0;
  46. for(int j=0; j<5; j++) {
  47. if(flag==0){
  48. cout<<ans[i][j];
  49. flag=1;
  50. }
  51. else{
  52. cout<<" "<<ans[i][j];
  53. }
  54. }
  55. cout<<endl;
  56. }
  57. }
  58. }

发表评论

表情:
评论列表 (有 0 条评论,26人围观)

还没有评论,来说两句吧...

相关阅读

    相关 2014..Problem C. 进程管理

    题目描述 在操作系统中,进程管理是非常重要的工作,每个进程都有唯一的进程标识(PID)。每个进程都可以启动子进程,此时我们称它为其子进程的父进程,除了PID为0的进程之外,

    相关 2014..Problem B. 最小堆

    题目描述 给定一棵带权二叉树,请判断它是不是一个最小堆。 一棵二叉树是一个最小堆,当且仅当对于树上任意一个节点,它的权值都小于或等于以它为根的子树中的所有权值。 输入

    相关 2014..Problem D. 网络传输

    题目描述 网络的高效互联与智能传输是提升海量用户服务请求映射效率的重要措施。在这个任务中,你要用最少的传输时间,将特定的数据源发送到指定的网络节点中。 我么给定的网络一