矩阵乘法---蓝桥杯
2014-10-27 13:59
316 查看
<p class="problem-content brush:">问题描述 给定一个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</p> import java.util.Scanner; public class matrixMul{ public static void main(String[] args) { int N,M; Scanner sc = new Scanner(System.in); N = sc.nextInt();//行列 M = sc.nextInt();//次幂 int[][] matrix = new int ; //输入 for(int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { matrix[i][j]=sc.nextInt(); } } //判断几次幂 if(M==1) { printNum(matrix,N); } else if(M==0) { for (int i=0;i < N;i++ ) { for (int j=0; j<N ;j++ ) { matrix[i][j]=1; } } printNum(matrix,N); } else if(M>=2&&M<=5) { getNum(matrix,N,M); } } public static void getNum(int[][] matrix,int N,int M) { int[][] matrixCopy = new int ; for(int i = 0 ;i < N; i++) { for(int j = 0; j < N; j++) { for (int k = 0; k < N; k++) { matrixCopy[i][j]+=matrix[i][k]*matrix[k][j];//交换 } } } --M; while((--M)>0) { int [][] temp = new int ; for(int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { temp[i][j]=matrixCopy[i][j];//用于保存上次结果 } } for(int i = 0 ;i < N; i++) { for(int j = 0; j < N; j++) { matrixCopy[i][j]=0;//用于清空上次结果,用temp保存上次结果参加运算 for (int k = 0; k < N; k++) { matrixCopy[i][j]+=temp[i][k]*matrix[k][j]; } } } } printNum(matrixCopy,N); } public static void printNum(int[][] matrix,int N) { //输出 for(int 8ecf i = 0; i < N; i++) { for (int j = 0; j < N; j++) { System.out.print(matrix[i][j]+" "); } System.out.print("\n"); } } }
相关文章推荐
- 矩阵乘法(蓝桥杯试题)
- 蓝桥杯_基础练习《矩阵乘法---27》
- 蓝桥杯——矩阵乘法
- 蓝桥杯--2012--古堡算式(暴力)
- 蓝桥杯 历届试题 高僧斗法 (stairNim博弈)
- 2014第五届蓝桥杯C++B组第八题:蚂蚁感冒
- 第四届蓝桥杯 软件类省赛真题 第四题:第39级台阶
- 蓝桥杯java第八届B组:承压计算
- 蓝桥杯 基础练习 高精度加法
- 蓝桥杯练习系统历届试题 买不到的数目
- 蓝桥杯之纸牌三角形
- Java 蓝桥杯第五届 第5题 九数组分数
- 梅森素数(2013蓝桥杯java—A组题目)
- 蓝桥杯训练:爆搜——酒店招待
- 第七届蓝桥杯大赛个人赛省赛(软件组)java语言B组---8.四平方和
- 第六届蓝桥杯 软件类省赛真题 第八题:移动距离
- 蓝桥杯 - 历届试题 兰顿蚂蚁
- 第八届蓝桥杯省赛试题
- 2013年第四届蓝桥杯试题(C/C++本科B组)
- 蓝桥杯 历届试题 大臣的旅费 (树的直径 BFS)