给定一个N×N的矩阵A,求|A|。
输入格式:
第一行一个正整数N。 接下来N行,每行N个整数,
第i行第j个数字表示A[i][j]。
输出格式 一行,输出|A|。
java代码:
import java.util.Scanner;
public class Main {
public static int f(int arr[][], int n) {
if(n==1) return arr[0][0];
if(n==2) {
return (arr[0][0]*arr[1][1]-arr[0][1]*arr[1][0]);
}
else {
// sum保存arr矩阵的行列式|A|
int sum = 0;
// 根据求行列式的公式计算
for(int i=0;i<n;++i) {
// 求出每个子矩阵
int arr1[][] = new int[n-1][n-1];
for(int j=1;j<n;++j) {
int count = 0;
for(int k=0;k<n;++k) {
if(k!=i)
arr1[j-1][count++] = arr[j][k];
}
}
int temp = arr[0][i]*f(arr1,n-1);
if(((i+1+1)%2)!=0) temp = (-1)*temp;
sum+=temp;
}
return sum;
}
}
public static void main(String[] args) {
int n;
Scanner in = new Scanner(System.in);
n = in.nextInt();
int arr[][] = new int[n][n];
for(int i=0;i<n;++i) {
for(int j=0;j<n;++j) {
arr[i][j] = in.nextInt();
}
}
System.out.println(f(arr,n));
}
}