【蓝桥杯】java基础练习--矩阵乘法,供参考思路

简介: 先看题目

先看题目

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //N阶矩阵
        int N = sc.nextInt();
        //M次方
        int M = sc.nextInt();
        int[][] A= new int[N][N];
        for (int i=0;i<N;i++){
            for (int j=0;j<N;j++){
                A[i][j] = sc.nextInt();
            }
        }
        //0次幂
        if(M == 0) {
            for(int i = 0; i < N; i++) {
                for(int j = 0; j < N; j++) {
                    if(i == j) {
                        System.out.print(1 + " ");
                    }else {
                        System.out.print(0 + " ");
                    }
                }
                System.out.println();
            }
        }else if(M == 1){
            for(int i = 0; i < N; i++) {
                for(int j = 0; j < N; j++) {
                    System.out.print(A[i][j] + " ");
                }
                System.out.println();
            }
        }else {
            //当幂大于2时需要一个新的数组来配合计算
            int[][] A1 = A;
            //i为幂
            for (int i = 1; i < M; i++) {
                //暂时存储计算的值
                int[][] result = new int[N][N];
                for (int j = 0; j < N; j++) {
                    for (int k = 0; k < N; k++) {
                        int count = 0;
                        int temp = 0;
                        while (count < N) {
                            //第j行乘以第k列
                            temp += A[j][count] * A1[count][k];
                            count++;
                        }
                        result[j][k] = temp;
                    }
                }
                //将结果给A数组
                A = result;
            }
            for (int i = 0; i < N; i++) {
                for (int j = 0; j < N; j++) {
                    System.out.print(A[i][j] + " ");
                }
                System.out.println();
            }
        }
    }
}



相关文章
|
1月前
|
设计模式 安全 Java
面向对象编程的精髓:Java设计模式 - 原型模式(Prototype)完全参考手册
【4月更文挑战第7天】原型模式是OOP中的创建型设计模式,用于通过复制现有实例创建新实例,尤其适用于创建成本高或依赖其他对象的情况。它包括Prototype接口、ConcretePrototype实现和Client客户端角色。优点是性能优化、避免子类化和动态增加产品族。实现包括定义原型接口、实现具体原型和客户端调用克隆方法。最佳实践涉及确保克隆正确性、选择深拷贝或浅拷贝及考虑线程安全。但需注意克隆方法管理、性能开销和循环引用等问题。在Java中,实现Cloneable接口和覆盖clone方法可实现原型模式。
|
1月前
|
Java
【java】小学生数学练习题目生成系统
小学生数学练习题目生成系统
|
8天前
|
Java
【Java基础】输入输出流(IO流)
Java基础、输入输出流、IO流、流的概念、输入输出流的类层次结构图、使用 InputStream 和 OutputStream流类、使用 Reader 和 Writer 流类
56 1
|
10天前
|
存储 索引
6/1 第十五届蓝桥杯国赛pb组 真题本人答案 仅供参考
6/1 第十五届蓝桥杯国赛pb组 真题本人答案 仅供参考
19 4
|
18天前
|
搜索推荐 算法 Java
【Java基础】 几种简单的算法排序
几种简单的JAVA算法排序
24 4
|
9天前
|
存储 缓存 Java
Java基础17-读懂Java IO流和常见面试题(二)
Java基础17-读懂Java IO流和常见面试题(二)
20 0
|
9天前
|
存储 Java Unix
Java基础17-读懂Java IO流和常见面试题(一)
Java基础16-读懂Java IO流和常见面试题(一)
19 0
|
1月前
|
Java
FEB选择(蓝桥杯JAVA C组)
FEB选择(蓝桥杯JAVA C组)
|
16天前
|
Java
P9242 [蓝桥杯 2023 省 B] 接龙数列JAVA,边权为1的最短路问题,洛谷P9242 [蓝桥杯 2023 省 B] 接龙数列​编辑力扣1926.迷宫离入口最近的出口力扣433.
P9242 [蓝桥杯 2023 省 B] 接龙数列JAVA,边权为1的最短路问题,洛谷P9242 [蓝桥杯 2023 省 B] 接龙数列​编辑力扣1926.迷宫离入口最近的出口力扣433.
|
29天前
|
机器学习/深度学习 Java Windows
Java练习-2023-3-29
Java练习-2023-3-29
10 0