1、当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。
2、矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。
3、乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。
private static int[][] A, B, C;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
A = new int[n][n];
B = new int[n][n];
C = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
A[i][j] = sc.nextInt();
B[i][j] = A[i][j];
}
}
if(m==0) {
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i!=j)
System.out.print("0"+" ");
else System.out.print("1"+" ");
}
System.out.println();
}
}else {
SQUARE_MATRIX_MULTIPLY(m);
for (int[] item : A) {
for (int data : item) {
System.out.print(data + " ");
}
System.out.println();
}
}
}
public static void SQUARE_MATRIX_MULTIPLY(int m) {
int n = A.length;
m -= 1;
while (m > 0) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
C[i][j] += B[i][k] * A[k][j];
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
A[i][j] = C[i][j];
C[i][j] = 0;
}
}
m--;
}
}