• 算法笔记_094:蓝桥杯练习 矩阵相乘(Java)


    目录

    1 问题描述

    2 解决方案

     


    1 问题描述

    问题描述
      小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容。
      当然,小明上课打瞌睡也没问题,但线性代数的习题可是很可怕的。
      小明希望你来帮他完成这个任务。

      现在给你一个ai行aj列的矩阵和一个bi行bj列的矩阵,
      要你求出他们相乘的积(当然也是矩阵)。
      (输入数据保证aj=bi,不需要判断)
    输入格式
      输入文件共有ai+bi+2行,并且输入的所有数为整数(long long范围内)。
      第1行:ai 和 aj
      第2~ai+2行:矩阵a的所有元素
      第ai+3行:bi 和 bj
      第ai+3~ai+bi+3行:矩阵b的所有元素
    输出格式
      输出矩阵a和矩阵b的积(矩阵c)
      (ai行bj列)
    样例输入
    2 2
    12 23
    45 56
    2 2
    78 89
    45 56
    样例输出
    1971 2356
    6030 7141

     


    2 解决方案

    具体代码如下:

    import java.util.Scanner;
    
    public class Main {
        
        public void matrixMulti(long[][] A, long[][] B) {
            long[][] result = new long[A.length][B[0].length];
            for(int i = 0;i < A.length;i++) {
                for(int j = 0;j < B[0].length;j++) {
                    for(int k = 0;k < A[0].length;k++)
                        result[i][j] += A[i][k] * B[k][j];
                }
            }
            for(int i = 0;i < A.length;i++) {
                for(int j = 0;j < B[0].length;j++)
                    System.out.print(result[i][j]+" ");
                System.out.println();
            }
            
            return;
        }
        
        public static void main(String[] args) {
            Main test = new Main();
            Scanner in = new Scanner(System.in);
            int ai = in.nextInt();
            int aj = in.nextInt();
            long[][] A = new long[ai][aj];
            for(int i = 0;i < ai;i++)
                for(int j = 0;j < aj;j++)
                    A[i][j] = in.nextLong();
            int bi = in.nextInt();
            int bj = in.nextInt();
            long[][] B = new long[bi][bj];
            for(int i = 0;i < bi;i++)
                for(int j = 0;j < bj;j++)
                    B[i][j] = in.nextLong();
            test.matrixMulti(A, B);
            
        }
    }

     

  • 相关阅读:
    如何将应用安装到/system/app下
    WPF Perf: RenderCapability.Tier & DesiredFrameRate
    DataGridComboBoxColumn为什么就不能在Binding的时候引用其他Named Element了呢?
    A366T使用技巧
    在XAML里面引用枚举值的注意点
    高斯消元bzoj1013球形空间产生器
    欧拉函数bzoj2818简单推导
    链剖进阶ing填坑NOIP2013货车运输
    .net 2.0 BackgroundWorker 文章三篇
    19号晚21号上午
  • 原文地址:https://www.cnblogs.com/liuzhen1995/p/6575928.html
Copyright © 2020-2023  润新知