蓝桥网试题 java 基础练习 矩阵乘法

蓝桥网试题 java 基础练习 矩阵乘法

蓝桥网试题 java 基础练习 矩阵乘法

------------------------------------------------------------

第一次感觉到好好学习的重要性QAQ

在做这道题之前请先学会 :矩阵乘法(百度百科)

矩阵的0次幂:对角线为1 其他值为0 例如

蓝桥网试题 java 基础练习 矩阵乘法

结果

蓝桥网试题 java 基础练习 矩阵乘法

蓝桥网试题 java 基础练习 矩阵乘法

------------------------------------------------------------

算法

 import java.util.*;
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];
long[][] b = new long[n][n];
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
b[i][j]=a[i][j] = sc.nextLong();
if(m==0)
for(i=0;i<n;i++){
for(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(i=0;i<n;i++){
for(j=0;j<n;j++)
System.out.print(a[i][j]+" ");
System.out.println();
}
else{
for(int z=1;z<m;z++){
long[][] tmp = new long[n][n];
for(i=0;i<n;i++){
for(j=0;j<n;j++){
long add = 0;
for(int y=0;y<n;y++){
add += a[i][y]*b[y][j];
}
tmp[i][j] = add;
}
}
b = tmp;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)
System.out.print(b[i][j]+" ");
System.out.println();
}
} }
}
上一篇:linux 大量的TIME_WAIT解决办法


下一篇:蓝桥网试题 java 入门训练 Fibonacci数列