蓝桥杯——矩阵乘法(java)
大致思路:
首先得了解矩阵乘法的公式,以下来自百度百科
这里A和B是一样的。在矩阵乘法的过程我专门用函数来完成,即函数部分就是以上公式的部分。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N = input.nextInt();
int M = input.nextInt();
int[][] A = new int[N][N];
int[][] B = new int[N][N];
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
A[i][j] = input.nextInt();
}
}
B = A; //初始化B和A一致
for(int i=1; i<M; i++){ //几次幂就重复多少次-1,
B = ad(A,B,N);
}
if(M == 0){
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
if(i == j){
B[i][j] = 1;
}else
B[i][j] = 0;
}
}
}
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
System.out.print(B[i][j]+" ");
}
System.out.println("");
}
}
static int[][] ad(int[][] a,int[][] b, int n){
int[][] c = new int[n][n]; //用c来存储返回的矩阵
for(int i=0; i<n; i++){ //c矩阵所有的值为0,方便累加
for(int j=0; j<n; j++){
c[i][j] = 0;
}
}
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
for(int p=0; p<n; p++){
c[i][j] = c[i][j] + a[i][p]*b[p][j];
}
}
}
return c;
}
}
这里注意当矩阵A的零次幂的时候,矩阵就是i=j的地方为1,其余为零。