JellyFishMo 发表于 2022-11-2 19:06:51

拉普拉斯展开求行列式的值

在数学中,拉普拉斯展开(亦称拉普拉斯公式)是一个关于行列式的展开式。将一个 矩阵B的行列式进行拉普拉斯展开,即是将其表示成关于矩阵B的某一行(或某一列)的 n个元素的余子式的和。行列式的拉普拉斯展开一般被简称为行列式按某一行(或按某一列)的展开。由于矩阵B有n行n列,它的拉普拉斯展开一共有2n种。不失一般性,我们在求行列式值的时候可以按第一行展开。拉普拉斯展开的推广称为拉普拉斯定理,是将一行的元素推广为关于k行的一切子式。它们的每一项和对应的代数余子式的乘积之和仍然是B的行列式。
设B= (bij)是一个n×n矩阵。B关于第i行第j列的余子式Mij是指B中去掉第i行第j列后得到的n−1阶子矩阵的行列式。有时可以简称为B的 余子式。B的 代数余子式:Cij是指B的 余子式Mij与(-1)^i+j的乘积。(建议用递归)

函数接口定义:
int det(int n, int(*p));
其中,n 和 p 都是用户传入的参数。 n是不超过10的正整数,p 是指向一个长度为n的一维数组的指针。该函数须返回n阶行列式的值。

裁判测试程序样例:
#include <stdio.h>

int det(int n, int(*p));

int main(){
    int n;
    scanf("%d", &n);
    int a;
    for(int i=0; i<n; i++){
      for(int j=0; j<n; j++){
            scanf("%d", *(a+i)+j);
      }
    }
    printf("%d\n", det(n, a));
    return 0;
}
/* 你提交的答案将被嵌在这里 */

jackz007 发表于 2022-11-2 20:04:30

          数学学得少,看不懂,能不能用 n = 3 的一个小行列式为例子简单讲解一下,到底想要的东西是什么?

JellyFishMo 发表于 2022-11-2 20:35:14

输入样例:
2
1 2
3 4
输出样例:
-2
页: [1]
查看完整版本: 拉普拉斯展开求行列式的值