题目链接:http://acm.swust.edu.cn/problem/643/

Time limit(ms): 1000        Memory limit(kb): 65535
Description
一个n阶方阵A行列式记作detA,或者|A|.detA是一个数字,它的值按照下面的方式递归定义: 
如果n=1,detA=a11; 
如果n>1,detA= s1 *a11*detA1+s2 * a12 *detA2 +......+sn * a1n *det An 
一个上三角矩阵的行列式等于主对角线上元素的乘积。 
行列式具有如下的性质: 
 性质1  行列式的行与列互换,其值不变; 
性质2 用数k乘行列式的某一行(列),等于以数乘此行列式

Input

第一行输入矩阵的阶n 
Output
第二行输入矩阵本身。
n阶矩阵A的行列式detA.

Sample Input

2
1 2
3 4
Sample Output

-2
hint

用高斯消去法得上三角矩阵
解题思路:并不相信hint了(开个n次方就是x^(1/n),非要说牛顿切线方程,笑哭~~~),利用线性代数中行列式的性质化为上三角(下三角)行列式
     我这里化为上三角,然后行列式的值就是对角线乘积~~~~代码有详细注释,实在不会的看现代书吧~~~~
代码如下:

 1 #include <stdio.h>
 2 double mpt[21][21];
 3 void init(int n)
 4 {
 5     int row, col;
 6     for (row = 0; row < n; row++)
 7     for (col = 0; col < n; col++)
 8         scanf("%lf", &mpt[row][col]);
 9 }
10
11 void solve(int n){
12     double temp, ans = 1.0;
13     int cnt = 0, flag = 0;
14     //cnt统计行变换 次数,每交换一次行,行列式符号变化1次,统计变化次数(详见线性代数课本)
15     int row, nextrow, col;
16     double tmp;
17     for (row = 0; row < n - 1; row++){
18         nextrow = row + 1;
19         //开始处理第一列,如果行列式第一行第一个数为零,要交换行
20         if (mpt[row][row] == 0){
21             while (mpt[nextrow][row] == 0){
22                 nextrow++; //如果行列式第二行第一个数为零,行增加继续寻找非零数值的行
23                 //如果遍历完行列式行列式第一列元素都为零,退出while循环
24                 if (nextrow == n){
25                     flag = 1;
26                     break;
27                 }
28             }
29             if (flag)continue;
30             //退出while循环后回到for(row=0;row<n-1;row++)行加1从mpt[row][row]==0知列也相应加1,开始处理第二列
31             cnt++;
32             for (col = 0; col < n; col++){
33                 //交换非零行到行列式顶部
34                 tmp = mpt[row][col];
35                 mpt[row][col] = mpt[nextrow][col];
36                 mpt[nextrow][col] = tmp;
37             }
38         }
39         for (nextrow = row + 1; nextrow < n; nextrow++){
40             temp = mpt[nextrow][row] / mpt[row][row];
41             for (col = 0; col < n; col++)
42                 mpt[nextrow][col] += -temp*mpt[row][col];//化行列式为上三角行列式形式
43         }
44     }
45     for (row = 0; row < n; row++)ans *= mpt[row][row];
46     printf("%.f\n", cnt & 1 ? -ans : ans);
47 }
48 int main(){
49     int n;
50     scanf("%d", &n);
51     init(n);
52     solve(n);
53     return 0;
54 }

View Code

转载于:https://www.cnblogs.com/zyxStar/p/4589853.html

[Swust OJ 643]--行列式的计算(上三角行列式变换)相关推荐

  1. 方阵求值——上三角行列式、定义(康拓展开求值)

    Problem:求方阵A的值. 设求n*n的矩阵:加法的操作次数为P(n),乘法的操作次数与为M(n). 对于方法1: j1~jn共有n!种选法:j1有n种选法,j2有n-1种选法,-,jn有1种选法 ...

  2. c++ 将行列式化为上三角行列式,并求值。

    c++ 将行列式化为上三角行列式,并求值. #include<stdio.h> #include<iostream> using namespace std;bool op(d ...

  3. 四阶行列式计算_四阶行列式的计算

    四阶行列式要比三阶行列式复杂得多,是真正意义的高阶行列式.求四阶行列式的方法有很多,可以直接用展开公式:也可以化四阶行列式为上三角行列式:可以把行列式某行或者列尽可能的多化出零,然后按这一行或列展开. ...

  4. 4阶范德蒙德行列式例题_线性代数入门——“爪型行列式”的计算及其应用

    系列简介:这个系列文章讲解线性代数的基础内容,注重学习方法的培养.线性代数课程的一个重要特点(也是难点)是概念众多,而且各概念间有着千丝万缕的联系,对于初学者不易理解的问题我们会不惜笔墨加以解释.在内 ...

  5. 线性代数学习笔记——行列式的性质及拉普拉斯定理——3. 根据定义计算简单的行列式

    1. 计算简单的行列式示例 2. 下三角行列式.单位行列式.数量行列式的计算 3. 斜下三角行列式.斜单位行列式.斜数量行列式的计算 4. 行列式可按任意一行.一列展开

  6. 行列式在计算机的应用,行列式的计算机及应用.doc

    行列式的计算机及应用 本科生毕业论文(设计) 题 目:行列式的计算及应用 姓 名:王冉冉 指导教师:郭素霞 系 别:数学系 专 业:数学与应用数学 年 级:2002级 完成日期:2006年 5 月26 ...

  7. swust oj#160促销计算

    SWUST OJ#160 题目描述 某百货公司为了促销,采用购物打折的优惠方法,每位顾客一次购物:在1000元以上者,按9.5折优惠:在2000以上者,按9折优惠:在3000以上者,按8.5折优惠:在 ...

  8. 三角矩阵上三角列优先压缩存储---加法、减法、乘法、转置、秩、行列式值、伴随矩阵、逆

    三角矩阵上三角列优先压缩存储: 我们以图4.9中的矩阵A矩阵为例,针对A上三角部分,采用以列为主序存储至一个一维数组B内,按照三角矩阵上三角元素构成可知,该部分有n(n+1)/2个元素,因为下三角中的 ...

  9. 【数据结构算法】二:上三角、下三角中求数组地址--【下标的计算】

    一.三角矩阵的概念 以主对角线划分三角矩阵有下三角矩阵和上三角矩阵 下三角矩阵:矩阵(除主对角线)的上三角部分的值均为一个常数C或者0 上三角矩阵:与下三角矩阵相反 图示:(图中蓝色主对角线部分元素( ...

最新文章

  1. linux使用qemu教程,Linux:使用 QEMU 测试 U-BOOT的步骤
  2. mysql数据库复制基本原理_MySQL的复制原理以及流程
  3. centos php 错误日志,centos系统下错误日志保存在哪里
  4. 飞凌开发板 cramfs 镜像文件修改
  5. Spring Data JPA 从入门到精通~基本注解
  6. 火狐浏览器老版本_谷歌和火狐浏览器将在下个月的新版本中支持开源免费的AVIF图像格式...
  7. 通信原理第三章 模拟调制系统
  8. WIN10禁用security center、自动更新、Defender Service
  9. python算法爬楼梯
  10. win10常用快捷键合集
  11. 【2014】手机卡关于怎么剪 让我告诉你
  12. 基于TILE-GX实现快速数据包处理框架-netlib实现分析
  13. c语言方波生成程序,关于C#:在软件上生成方波以进行模拟输入/输出
  14. CallStranger UPnP 漏洞曝光,影响数十亿台设备
  15. 模糊测试中的动态符号执行
  16. 安卓设置keychain_iOS 开发keychain 使用与多个APP之间共享keychain数据的使用
  17. 【女人吃豆腐的好处】
  18. 在钉钉小程序中使用可视化图表插件F2
  19. 【Unity2d】如何避免物体被销毁时绑定的音效消失
  20. 电压限压电路实现方式

热门文章

  1. 铁路一线工人春运备战实录:深夜里的“钢铁工匠”
  2. 关于python3的input函数和int()强制转换
  3. YOLOv5电车识别 电瓶车识别
  4. MacBook 安装固态硬盘
  5. 华为机试——字符串压缩(stringZip)
  6. 关于泰勒展开的细节-《三体》读后感的读后感...
  7. 关于 移动硬盘数据丢失问题 的解决方法
  8. [流体力学]描述流体运动的方法:拉格朗日法和欧拉法
  9. 一脸懵逼加从入门到绝望学习hadoop之Caused by: java.net.UnknownHostException: master报错...
  10. 按关键词搜索商品 淘宝API