Directorio
Prólogo
He estado realizando entrevistas recientemente. Muchos de los códigos escritos son demasiado vagos para publicarlos en el blog. Ahora está lleno, pero puede haber menos comentarios. Si tiene alguna pregunta, comuníquese conmigo
Examen preguntas ejercicios básicos multiplicación matricial
Límite de recursos Límite de
tiempo: 1.0s Límite de memoria: 512.0MB
Descripción del problema
Dada una matriz de orden N A, salida A a la potencia Mth (M es un entero no negativo)
Por ejemplo:
A =
1 2
3 4
A a la segunda potencia
7 10
15 22
Formato de entrada La
primera fila es un entero positivo N, M (1 <= N <= 30, 0 <= M <= 5), lo que significa el orden de la matriz A y la potencia requerida. Las
siguientes N filas, N cada fila Entero no negativo con un valor absoluto que no excede 10, que describe el valor de la matriz A
El formato de salida
genera un total de N filas, con N enteros por fila, que representan la matriz correspondiente a la potencia M-ésima de A. Los números adyacentes están separados por un espacio.
Entrada de muestra
2 2
1 2
3 4
Salida de muestra
7 10
15 22
Código para esta pregunta
import java.util.Scanner;
public class MatrixMulti {
private static int N;//矩阵A的阶数
private static int[][] matrix; //矩阵A
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
int M = sc.nextInt(); //要求的幂数
matrix = new int[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
matrix[i][j] = sc.nextInt();
}
}
int[][] newMatrix = new int[N][N];
if (M == 0) {
for (int i = 0; i < N; i++) {
newMatrix[i][i] = 1;
}
} else {
newMatrix = matrix;
for (int i = 0; i < M - 1; i++) {
newMatrix = matriMultiplication(newMatrix);
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
System.out.print(newMatrix[i][j] + " ");
}
System.out.println();
}
}
private static int[][] matriMultiplication(int[][] matrixParam) {
int[][] newMatrix = new int[N][N];
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
for (int k = 0; k < N; k++) {
newMatrix[i][k] += matrixParam[i][j] * matrix[j][k];
}
}
}
return newMatrix;
}
}