生活随笔
收集整理的這篇文章主要介紹了
java:蓝桥杯 矩阵乘法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題描述
給定一個N階矩陣A,輸出A的M次冪(M是非負整數)
例如:
A =
1 2
3 4
A的2次冪
7 10
15 22
輸入格式
第一行是一個正整數N、M(1<=N<=30, 0<=M<=5),表示矩陣A的階數和要求的冪數
接下來N行,每行N個絕對值不超過10的非負整數,描述矩陣A的值
輸出格式
輸出共N行,每行N個整數,表示A的M次冪所對應的矩陣。相鄰的數之間用一個空格隔開
樣例輸入
2 2
1 2
3 4
樣例輸出
7 10
15 22
代碼實現:
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();long[][] a = new long[n][n];//用int容易越界,所以用longlong[][] b = new long[n][n];for(int i = 0;i<n;i++) {for(int j = 0;j<n;j++) {a[i][j] = b[i][j] = sc.nextLong();//寫出兩個矩陣,然后相乘}}if(m == 0) {//矩陣得0次冪等于單位矩陣Efor(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 {for(int i = 1;i<m;i++) {long[][] db = new long[n][n]; //臨時矩陣for(int j = 0;j<n;j++) {for(int k = 0;k<n;k++) {for(int l = 0;l<n;l++) {db[j][k] +=a[j][l]*b[l][k]; //核心公式} }}b = db;//將db賦值給b,下次冪運算就用二次乘一次達到遞增}//輸出for(int i = 0;i<n;i++) {for(int j = 0;j<n;j++) {System.out.print(b[i][j]+" ");}System.out.println();}}}
}
總結
以上是生活随笔為你收集整理的java:蓝桥杯 矩阵乘法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。