ADV-292 计算行列式 java
2024-09-07 00:06:49
问题描述
//据说很多人的题目会有一大堆废话,本傻×就不在这里废话了。
给定一个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
很简单的一道线性代数题目
用简单化的拉普拉斯定理就行了
import java.util.*; public class Main { static int getit(int[][] a, int n) {
if(n == 1) return a[0][0];
if(n == 2) return a[0][0] * a[1][1] - a[0][1] * a[1][0];
int[][] shuzu = new int[n-1][n-1];
int ans = 0;
for(int i = 0; i < n; ++i) { //每次将a[0][i]的行列去掉,赋值给一个新的数组
for(int x = 0; x < n-1; ++x) {
for(int y = 0; y < i; ++y)
shuzu[x][y] = a[x+1][y];
for(int y = i; y < n-1; ++y)
shuzu[x][y] = a[x+1][y+1]; } ans += a[0][i] * Math.pow(-1, i) * getit(shuzu, n-1); //然后进行递归
}
return ans;
} public static void main(String args[]) { Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] shu = new int[n][n];
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
shu[i][j] = sc.nextInt();
System.out.print(getit(shu, n)); }
}
同时也激发起我对线性代数的求生欲 0.0
最新文章
- uploadify API
- svn 钩子 post-commit 出现255错误解决办法
- 【原】日志处理-Spark
- Moving Tables
- js点击 密码输入框密码显示隐藏
- DESTOON伪静态的设置/news/1.html格式
- Gimp教程:简约手机图标风格
- The leaflet package for online mapping in R(转)
- 同网段电脑互ping
- webpack 4.x 遇到的错误
- Linux系统下yum镜像源环境部署记录
- nginx异常处理
- [转载]安装Oracle11gR2先决条件检查失败的详细解决处理过程
- Qt样式表都有哪些属性可以设置
- ListUtil(差集、交集、并集)
- 转:extern ";C";的用法解析
- JavaScript学习总结(十二)——JavaScript编写类
- Python学习笔记系列——高阶函数(map/reduce)
- Eclipse中设置作者、日期等的方式
- python easy_install 发生Unable to find vcvarsall.bat错误的处理方法