La prueba de Blue Bridge Cup preguntas ejercicios básicos multiplicación de matrices BASIC-17 JAVA

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;
    }
}
113 artículos originales publicados · Me gustaron 105 · Visitantes más de 20,000

Supongo que te gusta

Origin blog.csdn.net/weixin_43124279/article/details/105419129
Recomendado
Clasificación