基础练习 矩阵乘法

问题描述
  给定一个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个绝对值不超过10的非负整数,描述矩阵A的值
输出格式
  输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开
样例输入
2 2
1 2
3 4
样例输出
7 10
15 22
 1 import java.text.DecimalFormat;
 2 import java.text.NumberFormat;
 3 import java.util.ArrayList;
 4 import java.util.Scanner;  
 5 
 6     public class Main{   
 7         public static void main(String[] args){  
 8             Scanner input = new Scanner(System.in);
 9             int n,m;
10             n = input.nextInt();
11             m = input.nextInt();
12             int[][] a = new int[n][n];
13             int[][] temp = new int[n][n];
14             int[][] b = new int[n][n];
15             for(int i=0;i<n;i++){
16                 for(int j=0;j<n;j++){
17                     a[i][j] = input.nextInt();
18                     b[i][j] = a[i][j];
19                 }
20             }
21             int h = m;
22             int sum = 0;
23             int i,j;
24             if(h==0){
25                 for(i=0;i<n;i++){
26                     for(j=0;j<n;j++){
27                         if(i==j)
28                             System.out.print("1 ");
29                         else
30                             System.out.print("0 ");
31                     }
32                     System.out.println();
33                 }
34                 System.exit(0);
35             }
36             while(--h!=0){
37                 for(i=0;i<n;i++){
38                     for(j=0;j<n;j++){
39                         sum = 0;
40                         for(int k=0;k<n;k++){
41                             sum = sum+a[i][k]*b[k][j];
42                         }
43                         temp[i][j] = sum;
44                     }
45                 }
46                 for(i=0;i<n;i++){
47                     for(j=0;j<n;j++){
48                         a[i][j] = temp[i][j];
49                     }
50                 }
51             }
52             for(i=0;i<n;i++){
53                 for(j=0;j<n;j++){
54                         System.out.print(a[i][j]+" ");
55                 }
56                 System.out.println();
57             }
58             
59         }
60  }  
原文地址:https://www.cnblogs.com/lolybj/p/6506389.html