【蓝桥杯】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基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
1月前
|
XML Java 数据格式
Java正则表达式大全(参考)
Java正则表达式大全(参考)
|
3月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
52 6
|
4月前
|
移动开发 JavaScript 搜索推荐
2024年最新1000个Java毕业设计选题参考
2024年最新1000个Java毕业设计选题参考
477 1
|
5月前
|
安全 Java
|
5月前
|
Java
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
2016届蓝桥杯大赛软件类国赛Java大学B组 愤怒小鸟 数学模拟
52 4
|
5月前
|
Java
蓝桥杯Java组暴力递归搜图
蓝桥杯Java组暴力递归搜图
33 4
|
5月前
|
Java
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
2022蓝桥杯大赛软件类国赛Java大学B组 左移右移 空间换时间+双指针
44 3
|
5月前
|
Java
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
50 2
下一篇
无影云桌面