基础练习 BASIC-17 矩阵乘法

来源:互联网 发布:淘宝美工流程图 编辑:程序博客网 时间:2024/05/16 15:17
问题描述
  给定一个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

import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();int m = input.nextInt();int [][] arr = new int[n][n];int [][] result = new int[n][n];int [][] temp = new int[n][n];int [][] answer = new int[n][n];for (int i=0; i<arr.length; i++){for(int j=0; j<arr[i].length; j++){arr[i][j] = input.nextInt();result[i][j] = 0;temp[i][j] = arr[i][j];answer[i][j] = 0;}}if (m==0){for (int i=0; i<answer.length; i++){answer[i][i]=1;}for (int i=0; i<answer.length; i++){for(int j=0; j<answer[i].length; j++){System.out.print(answer[i][j]+" ");}System.out.println();}return;}int num = 0;for (int index=1; index<m; index++){for (int i=0; i<arr.length; i++){for(int j=0; j<arr[i].length; j++){for (int k =0; k<n; k++){//System.out.println(temp[i][k]+"------"+arr[k][j]);result[i][j]  = result[i][j]  + temp[i][k]*arr[k][j];}}}   for (int i=0; i<result.length; i++){for(int j=0; j<result[i].length; j++){temp[i][j] = result[i][j];answer[i][j] = result[i][j];//System.out.print(result[i][j]+" ");result[i][j] = 0;}//System.out.println();}}for (int i=0; i<answer.length; i++){for(int j=0; j<answer[i].length; j++){System.out.print(answer[i][j]+" ");}System.out.println();}}}



原创粉丝点击