鱼C论坛

 找回密码
 立即注册
查看: 2265|回复: 2

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

[复制链接]
发表于 2022-11-2 19:06:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在数学中,拉普拉斯展开(亦称拉普拉斯公式)是一个关于行列式的展开式。将一个 矩阵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]);
其中,n 和 p 都是用户传入的参数。 n是不超过10的正整数,p 是指向一个长度为n的一维数组的指针。该函数须返回n阶行列式的值。

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

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

int main(){
    int n;
    scanf("%d", &n);
    int a[n][n];
    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;
}
/* 你提交的答案将被嵌在这里 */
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-2 20:04:30 | 显示全部楼层
          数学学得少,看不懂,能不能用 n = 3 的一个小行列式为例子简单讲解一下,到底想要的东西是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-2 20:35:14 | 显示全部楼层
输入样例:
2
1 2
3 4
输出样例:
-2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-7 16:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表