ブルーブリッジカップのテストでは、基本的な演習の行列乗算BASIC-17 JAVAに質問します

序文

私は最近インタビューを行っています。書かれたコードの多くは、ブログに投稿するのが面倒なので、現在は記入されていますが、コメントが少ない場合があります。ご不明な点がございましたら、お問い合わせください

試験問題の基本的な演習行列の乗算

リソース制限
時間制限:1.0秒メモリ制限:512.0MB

問題の説明
  N次の行列Aが与えられた場合、出力AのM乗(Mは負でない整数)
  例:
  A =
  1 2
  3 4
  Aの2
  7 10
  15 22

入力形式
  最初の行は正の整数N、M(1 <= N <= 30、0 <= M <= 5)で、これは行列Aの次数と必要なパワーを意味します。
  次のN行、N各行行列Aの値を表す、絶対値が10以下の非負の整数

出力形式
  は、AのM乗に対応する行列を表す、行あたりN個の整数で、合計N行を出力します隣接する数字はスペースで区切られます

サンプル入力
2 2
1 2
3 4

出力例
7 10
15 22

この質問のコード

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元の記事 ウォンの賞賛105 ・は 20000 +を見て

おすすめ

転載: blog.csdn.net/weixin_43124279/article/details/105419129
おすすめ