Java实现 蓝桥杯 算法提高 计算行列式
2023-09-14 08:58:07 时间
试题 算法提高 计算行列式
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
//据说很多人的题目会有一大堆废话,本傻×就不在这里废话了。
给定一个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
PS:这个题还是数学有难度,算法并不难
n = 1 时,Det(a) = a[0][0]
n = 2 时,Det(a) = a[0][0] * a[1][1] - a[1][0] * a[0][1]
n > 2 时,Det(a) = sum(a[0][i] * (-1)^i * 去掉a[0][i]所在行列的n-1阶行列式的值)
package com.company;
import java.util.Scanner;
public class 计算行列式 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int [] [] num = new int[n][n];
for (int i=0;i<n;i++){
for (int j=0;j<n;j++){
num[i][j]=sc.nextInt();
}
}
System.out.println(f(num,n));
}
public static int f(int num[][],int n){
if(n==1) return num[0][0];
if(n==2) return num[0][0]*num[1][1]-num[0][1]*num[1][0];
int ans = 0;
int tmp[][] =new int[8][8];
for(int i=0;i<n;++i)
{
for(int row=0; row<n-1; ++row)
{
for(int col=0; col<i; ++col)
tmp[row][col] = num[row+1][col];
for(int col=i; col<n-1;++col)
tmp[row][col] = num[row+1][col+1];
}
ans += num[0][i]*f(tmp,n-1)*(i%2==0?1:-1);
}
return ans;
}
}
相关文章
- Java实现 蓝桥杯 算法训练 天数计算
- Java实现【USACO】1.1.2 贪婪的礼物送礼者 Greedy Gift Givers
- Java实现蓝桥杯VIP算法训练 纪念品分组
- Java实现 蓝桥杯 算法提高 计算行列式
- Java实现 蓝桥杯VIP 算法提高 分苹果
- Java实现 蓝桥杯VIP 算法提高 种树
- Java实现 蓝桥杯VIP 算法提高 计算器
- Java实现 蓝桥杯VIP 算法提高 勾股数
- Java实现 蓝桥杯VIP 算法训练 薪水计算
- Java实现 蓝桥杯VIP 算法训练 斜率计算
- Java实现 蓝桥杯VIP 算法训练 斜率计算
- Java实现 蓝桥杯VIP 算法训练 斜率计算
- Java实现 蓝桥杯VIP 算法训练 最大值与最小值的计算
- Java实现 蓝桥杯VIP 算法训练 最大值与最小值的计算
- Java实现 蓝桥杯VIP 算法训练 成绩的等级输出
- Java实现 蓝桥杯VIP 算法训练 二元函数
- Java实现 蓝桥杯 算法提高 概率计算
- Java实现 蓝桥杯 算法提高 概率计算
- Java实现 蓝桥杯 算法提高 日期计算
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- [Java 泥水匠] Java Components 之二:算法篇之项目实践中的位运算符(有你不懂的哦)
- 使用Java操作Elasticsearch(Elasticsearch的java api使用)