您的位置:首页 > 其它

矩阵n次冥

2014-03-08 10:44 411 查看
/*问题描述
给定一个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

;
tmp = new int

;
// 初始化
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

;
// 矩阵乘法
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]
* array
[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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: