博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
华为OJ平台——矩阵乘法
阅读量:5030 次
发布时间:2019-06-12

本文共 2574 字,大约阅读时间需要 8 分钟。

题目描述:

如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。

输入:

  1、第一个矩阵的行数

  2、第一个矩阵的列数(也是第二个矩阵的行数)
  3、第二个矩阵的列数
  4、第一个矩阵的值
  5、第二个矩阵的值

输出:

  输出两个矩阵相乘的结果

样例输入

  2 2 2 3 8 8 0 9 0 18 9

样例输出

  171 72

  72  0

思路:

题目意思很简单,只是实现两个矩阵乘法功能,要注意的一点是输出的格式。

OJ平台中对输出的格式非常严格,经过多次尝试,验证此题的正确输出格式是:

  输出应该是x行,z列的格式
  每一行中各列之间应用空格键隔开,不能用Tab键
  最后一行的末尾不能换行

 

1 import java.util.Scanner; 2  3 /** 4  * 实现两个矩阵的乘法的功能,并输出结果 5  * 6  */ 7 public class MultipleMatrix { 8  9     public static void main(String[] args) {10         /*11          * 输入数据,按照输入的格式对应输入12          *     1、第一个矩阵的行数13          *     2、第一个矩阵的列数(也是第二个矩阵的行数)14          *     3、第二个矩阵的列数15          *     4、第一个矩阵的值16          *     5、第二个矩阵的值17          */18         Scanner cin = new Scanner(System.in) ;    19         int x = cin.nextInt() ;20         int y = cin.nextInt() ;21         int z = cin.nextInt() ;22         //简单判断是否出错23         if(x < 1 || y <1 || z < 1){24             cin.close() ;25             return ;26         }27         28         int [][] fstMtr = new int [x][y] ;29         int [][] sndMtr = new int [y][z] ;30         //输入第一个矩阵A[x][y]31         for(int i = 0 ; i < x ; i++){32             for(int j = 0 ; j < y ; j++){33                 fstMtr[i][j] = cin.nextInt() ;34             }35         }36         //输入第一个矩阵B[Y][Z]37         for(int i = 0 ; i < y ; i++){38             for(int j = 0 ; j < z ; j++){39                 sndMtr[i][j] = cin.nextInt() ;40             }41         }42         cin.close() ;43         44         int [][] result = new int[x][z] ;45         //计算结果,按照矩阵相乘的公式进行计算46         for(int i = 0 ; i < x ; i++){47             for(int j = 0 ; j < z ; j++){48                 result[i][j] = 0 ;49                 for(int k = 0 ; k < y ; k++){50                      result[i][j] += fstMtr[i][k]*sndMtr[k][j] ;51                 }52                 /*53                  * 输出结果,OJ平台中对输出的格式非常严格,54                                     经过多次尝试,验证:55                  * 此题的正确输出格式应该是x行,z列的格式56                  * 一行中各列之间应用空格键隔开,不能用Tab键57                  * 最后一行的末尾不能换行58                  */59                 if(j == z-1){60                     if(i == x-1){61                         System.out.print(result[i][j]);62                     }else{                        63                         System.out.println(result[i][j]);64                     }65                 }else{                    66                     System.out.print(result[i][j]+" ");67                 }68             }69         }            70 71     }72 73 }
Code

 

转载于:https://www.cnblogs.com/mukekeheart/p/5596873.html

你可能感兴趣的文章
python+selenium进行简单验证码获取
查看>>
where,having与 group by连用的区别
查看>>
【MySQL】MySQL锁和隔离级别浅析二 之 INSERT
查看>>
Oracle T4-2 使用ILOM CLI升级Firmware
查看>>
4.14上午
查看>>
数据分析 -- 白话一下什么是决策树模型(转载)
查看>>
Java SPI机制原理和使用场景
查看>>
web前端java script学习2017.7.18
查看>>
删除TXPlatform
查看>>
LaTex:图片排版
查看>>
并发访问超时的问题可能性(引用)
查看>>
中小团队基于Docker的Devops实践
查看>>
利用python打开摄像头并保存
查看>>
System函数的使用说明
查看>>
Selenium-测试对象操作之:获取浏览器滚动条滚动距离
查看>>
Linux下MySQL数据库安装与配置
查看>>
Extjs String转Json
查看>>
oracle入门(4)——少而常用的命令
查看>>
打印机设置(PrintDialog)、页面设置(PageSetupDialog) 及 RDLC报表如何选择指定打印机...
查看>>
Java 虚拟机部分面试题
查看>>