ADV-292计算行列式 java

Posted 哦豁!!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ADV-292计算行列式 java相关的知识,希望对你有一定的参考价值。

问题描述
  //据说很多人的题目会有一大堆废话,本傻×就不在这里废话了。
  给定一个N×N的矩阵A,求|A|。
输入格式
  第一行一个正整数N。
  接下来N行,每行N个整数,第i行第j个数字表示A[i][j]。
输出格式
  一行,输出|A|。
样例输入
2
1 2
3 4
样例输出
-2
数据规模和约定
  0<N≤6
  -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的主要内容,如果未能解决你的问题,请参考以下文章

n阶行列式的全排列求解(Java)

从JVM的角度看JAVA代码--代码优化

行列式对角线的计算(代码实现)

递归的学习(计算行列式汉诺塔问题)

用cupy(python)计算矩阵的行列式

java 二维数组行列互换