关闭

基础练习 BASIC-17 矩阵乘法

标签: java数据结构算法蓝桥杯
35人阅读 评论(0) 收藏 举报
分类:
问题描述
  给定一个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();
		}
	}
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7689次
    • 积分:1447
    • 等级:
    • 排名:千里之外
    • 原创:143篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条