2024 ccfcsp认证打卡 2023 05 2 矩阵运算

java 复制代码
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int N = 10010, D = 30;
        long[][] tmp = new long[D][D];  // 用于存储 K 的转置 * V 的结果
        long[][] ans = new long[N][D];  // 存储最终结果
        int n, d;  // n 表示矩阵的行数,d 表示矩阵的列数
        int[][] Q = new int[N][D];  // 输入矩阵 Q
        int[][] K = new int[N][D];  // 输入矩阵 K
        int[][] V = new int[N][D];  // 输入矩阵 V
        int[] W = new int[N];       // 输入数组 W

        n = input.nextInt();  // 输入矩阵行数
        d = input.nextInt();  // 输入矩阵列数
        
        // 输入矩阵 Q
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= d; j++)
                Q[i][j] = input.nextInt();
        
        // 输入矩阵 K
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= d; j++)
                K[i][j] = input.nextInt();
        
        // 输入矩阵 V
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= d; j++)
                V[i][j] = input.nextInt();
        
        // 输入数组 W
        for (int i = 1; i <= n; i++)
            W[i] = input.nextInt();

        // 计算 K 的转置 * V = tmp
        for (int i = 1; i <= d; i++)
            for (int j = 1; j <= d; j++)
                for (int k = 1; k <= n; k++)
                    tmp[i][j] += (long) K[k][i] * V[k][j];

        // 计算 Q * tmp = ans
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= d; j++) {
                for (int k = 1; k <= d; k++)
                    ans[i][j] += (long) Q[i][k] * tmp[k][j];
                ans[i][j] *= (long) W[i];
            }

        // 输出结果
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= d; j++)
                System.out.print(ans[i][j] + " ");
            System.out.println();
        }
    }
}
相关推荐
小毅&Nora5 分钟前
【Java线程安全实战】⑨ CompletableFuture的高级用法:从基础到高阶,结合虚拟线程
java·线程安全·虚拟线程
冰冰菜的扣jio5 分钟前
Redis缓存中三大问题——穿透、击穿、雪崩
java·redis·缓存
mit6.82412 分钟前
几何|阻碍链
算法
有一个好名字14 分钟前
力扣-小行星碰撞
算法·leetcode·职场和发展
MM_MS14 分钟前
Halcon图像锐化和图像增强、窗口的相关算子
大数据·图像处理·人工智能·opencv·算法·计算机视觉·视觉检测
小璐猪头18 分钟前
专为 Spring Boot 设计的 Elasticsearch 日志收集 Starter
java
lamentropetion21 分钟前
E - Equal Tree Sums CF1656E
算法
代码游侠23 分钟前
应用——智能配电箱监控系统
linux·服务器·数据库·笔记·算法·sqlite
ps酷教程38 分钟前
HttpPostRequestDecoder源码浅析
java·http·netty
闲人编程38 分钟前
消息通知系统实现:构建高可用、可扩展的企业级通知服务
java·服务器·网络·python·消息队列·异步处理·分发器