矩阵n次冥

原创 2014年03月08日 10:44:46
/*问题描述
 给定一个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.*;

public class Main6 {
	public static int N, M;
	public static int[][] array, result, tmp;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		N = sc.nextInt();
		M = sc.nextInt();
		array = new int[N][N];
		tmp = new int[N][N];
		// 初始化
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				array[i][j] = sc.nextInt();
				tmp[i][j] = array[i][j];
			}
		}
		// 矩阵的一次方等于本身
		if (M == 1) {
			for (int i = 0; i < N; i++) {
				for (int j = 0; j < N; j++) {
					System.out.print(tmp[i][j] + " ");
				}
				System.out.println();
			}
			return;
		}
		// 0次方等于单位矩阵
		if (M == 0) {
			for (int i = 0; i < N; i++) {
				for (int j = 0; j < N; j++) {
					if (i == j) {
						System.out.print(1 + " ");
					} else
						System.out.print(0 + " ");
				}
				System.out.println();
			}
			return;
		}
		// 计算矩阵乘法
		for (int m = 0; m < M - 1; m++) {
			result = new int[N][N];
			// 矩阵乘法
			for (int i = 0; i < N; i++) {
				for (int j = 0; j < N; j++) {
					for (int n = 0; n < N; n++) {
						result[i][j] += tmp[i][n] * array[n][j];
					}
				}
			}
			// 记录矩阵地i-1次方的值
			for (int i = 0; i < N; i++) {
				for (int j = 0; j < N; j++) {
					tmp[i][j] = result[i][j];
				}
			}
		}
		// 打印矩阵
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				System.out.print(result[i][j] + " ");
			}
			System.out.println();
		}
	}
}

求矩阵的n次方 快速幂

矩阵的快速幂是用来高效地计算矩阵的高次方的。将朴素的o(n)的时间复杂度,降到log(n)。 这里先对原理(主要运用了矩阵乘法的结合律)做下简单形象的介绍: 一般一个矩阵的n次方,...
  • puppylpg
  • puppylpg
  • 2015年04月19日 19:07
  • 3006

矩阵快速幂的JAVA实现

矩阵快速幂题目描述:给定一个n*n的矩阵,求该矩阵的k次幂,即P^k。**如何快速的算出一个矩阵的N次幂呢,举个例子,比如A^19 => (A^16)*(A^2)*(A^1)显然采取这样的方式计算时...
  • Rzty_it
  • Rzty_it
  • 2017年02月10日 21:36
  • 980

2的N次幂表示

问题描述   任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。   将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^...
  • xukun5137
  • xukun5137
  • 2015年06月03日 18:47
  • 704

矩阵乘法(蓝桥杯试题)

矩阵乘法(蓝桥杯试题)问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如:   A =   1 2   3 4   A的2次幂   7 10   15 22输入格式 ...
  • bb2210083
  • bb2210083
  • 2016年02月19日 11:57
  • 453

算法题练习(三)----矩阵的k次幂

题目import java.util.*; import java.io.*; public class Main{ /** * [power description] 矩阵幂运算函...
  • qq_34194478
  • qq_34194478
  • 2018年01月13日 09:43
  • 17

蓝桥杯:矩阵乘法

题目: 给定一个N阶矩阵A,输出A的M次幂(M是非负整数)   例如:   A =   1 2   3 4   A的2次幂   7 10   15 22 输入格式   第一行是一个正整数N、M(1  ...
  • JDOUN
  • JDOUN
  • 2016年03月05日 13:07
  • 1863

矩阵乘法---蓝桥杯

import java.util.Scanner; public class matrixMul{ public static void main(String[] args) { int N,...
  • kerrylovelj
  • kerrylovelj
  • 2014年10月27日 13:59
  • 1029

2的n次幂的Java实现

首先扯点别的:今天上海下雨了,不大,空气很清新,温度也很舒适,今晚可以睡个好觉了。 今天总结一些2的n次幂的算法实现,只讨论n>=0的情况。 如果n比较小的话,可以这样实现。 private s...
  • leilifengxingmw
  • leilifengxingmw
  • 2017年05月24日 08:57
  • 1082

浅析图的邻接矩阵进行平方运算的含义

某一天,我在一本书上看到了一个问题,大意是实现矩阵的平方运算,并分析平方运算后邻接矩阵中元素值的含义,想了好久没弄明白。今天上课闲来无数,在纸上把这个问题模拟了一下,没想到却发现了其中的巧妙。 首先我...
  • u011251225
  • u011251225
  • 2015年03月18日 20:40
  • 6856

a的n次方的高效算法

a^b的高效算法 LZ之所以要贴上这个算法,是因为LZ的一个朋友用这个小算法考过LZ,我当时想到了这个算法,思想有了,但是没有实现出来,但是我朋友用递归的方法写的,但是递归的LZ的理解不是很深刻,所...
  • Up_junior
  • Up_junior
  • 2015年06月18日 23:08
  • 1563
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:矩阵n次冥
举报原因:
原因补充:

(最多只允许输入30个字)