ADV-292计算行列式 java
Posted 哦豁!!!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ADV-292计算行列式 java相关的知识,希望对你有一定的参考价值。
问题描述
//据说很多人的题目会有一大堆废话,本傻×就不在这里废话了。
给定一个N×N的矩阵A,求|A|。
给定一个N×N的矩阵A,求|A|。
输入格式
第一行一个正整数N。
接下来N行,每行N个整数,第i行第j个数字表示A[i][j]。
接下来N行,每行N个整数,第i行第j个数字表示A[i][j]。
输出格式
一行,输出|A|。
样例输入
2
1 2
3 4
1 2
3 4
样例输出
-2
数据规模和约定
0<N≤6
-10≤A[i][j]≤10
-10≤A[i][j]≤10
很简单的一道线性代数题目
用简单化的拉普拉斯定理就行了
1 import java.util.*; 2 3 public class Main { 4 5 static int getit(int[][] a, int n) { 6 if(n == 1) return a[0][0]; 7 if(n == 2) return a[0][0] * a[1][1] - a[0][1] * a[1][0]; 8 int[][] shuzu = new int[n-1][n-1]; 9 int ans = 0; 10 for(int i = 0; i < n; ++i) { //每次将a[0][i]的行列去掉,赋值给一个新的数组 11 for(int x = 0; x < n-1; ++x) { 12 for(int y = 0; y < i; ++y) 13 shuzu[x][y] = a[x+1][y]; 14 for(int y = i; y < n-1; ++y) 15 shuzu[x][y] = a[x+1][y+1]; 16 17 } 18 19 20 ans += a[0][i] * Math.pow(-1, i) * getit(shuzu, n-1); //然后进行递归 21 } 22 return ans; 23 } 24 25 public static void main(String args[]) { 26 27 Scanner sc = new Scanner(System.in); 28 int n = sc.nextInt(); 29 int[][] shu = new int[n][n]; 30 for(int i = 0; i < n; i++) 31 for(int j = 0; j < n; j++) 32 shu[i][j] = sc.nextInt(); 33 System.out.print(getit(shu, n)); 34 35 36 } 37 }
同时也激发起我对线性代数的求生欲 0.0
以上是关于ADV-292计算行列式 java的主要内容,如果未能解决你的问题,请参考以下文章