二更:把更多的行列式有关内容加了进来(%%%%%Jelly Goat奆佬)

题目描述

给你一个N(n≤10n\leq 10n≤10)阶行列式,请计算出它的值

输入输出格式

输入格式:

第一行有一个整数n
在以下n行中,每行有n个整数,表示该行列式

输出格式:

这个行列式的值

输入输出样例

输入样例#1:

8
2 10 4 4 3 6 10 6
1 10 9 3 2 1 6 7
3 9 8 7 1 1 8 7
2 10 8 6 9 9 3 4
1 7 1 8 2 6 2 3
9 2 4 8 10 6 10 3
3 6 7 9 8 2 8 1
2 9 2 1 10 7 4 5
输出样例#1:

-135742
输入样例#2:

4
1 2 3 4
1 3 4 1
1 4 1 2
1 1 2 3
输出样例#2:

16
首先这是一道非常简单的板子题,他耗费了我两天将近两个多小时的时间,那么我们就来细细分析一下这道题
思路大致如下: 按照高斯消元法,把行列式消成下三角,然后按照公式直接求对角线乘积即为答案
有这么几个坑
1.忘记用double类型,因为行列式做除法的时候肯定是要出小数的,不用double肯定gg
2.没有注意当a[i][i]==0的时候,我们没法按照公式把它下面消为零,所以需要一个换行操作
代码如下
while (a[i][i] ==  && sum<=n) //对是否a[i][i]是0的特判
{
CH2(i, sum + ); //交换x列和y列
ans *= -;
sum++;
}
3.输出的时候忘记控制精度,其实原因是这样的,在小数点后位数多于18个之后,c++会自动转成科学计数法。。。。。。
但是洛谷不认啊喂!!!!!!!,所以输出的时候手动控制一下就好
  printf("%0.0lf", ans);
4.各种奇奇怪怪的诸如循环控制写错了或者是while条件判错了的诡异失误,导致我挂了整整五次
不过这种经历也的确是能让我深刻的记住这道题了吧。
现在贴一下AC代码
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
double n, a[][], ans = ;
int sum;
inline void CH1(int x, int y, double k) //第y行减k*x
{
for (int i = ; i <= n; ++i)
a[y][i] -= (double)(k * a[x][i]);
}
inline void CH2(int x, int y) //交换x列和y列
{
for (int i = ; i <= n; ++i)
swap(a[i][x], a[i][y]);
}
inline double CH3(int x, double k) //把第x行提出一个公因数k
{
for (int i = ; i <= n; ++i)
a[x][i] /= k;
return k;
}
int main()
{
scanf("%lf", &n);
for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j)
scanf("%lf", &a[i][j]);
for (int i = ; i < n; ++i)
{
sum=i;
while (a[i][i] == && sum<=n) //对是否a[i][i]是0的特判
{
CH2(i, sum + ); //交换x列和y列
ans *= -;
sum++;
}
ans *= CH3(i, a[i][i]);
for (int j = i + ; j <= n; ++j)
CH1(i, j, a[j][i]);
}
for (int i = ; i <= n; ++i)
ans *= a[i][i];
printf("%0.0lf", ans);
return ;
}

 

U66785 行列式求值的更多相关文章

  1. 高斯消元与行列式求值 part1

    两道模板题,思路与算法却是相当经典. 先说最开始做的行列式求值,题目大致为给一个10*10的行列式,求其值 具体思路(一开始看到题我的思路): 1.暴算,把每种可能组合试一遍,求逆序数,做相应加减运算 ...

  2. 洛谷P7112 行列式求值

    行列式求值 这是一个让你掉头发的模板题 行列式的定义 行列式 (\(\texttt{Determinant}\)) 是一个函数定义,取值是一个标量. 对一个 \(n\times n\) 的矩阵 \(A ...

  3. 基于上三角变换或基于DFS的行(列)展开的n阶行列式求值算法分析及性能评估

    进入大一新学期,看完<线性代数>前几节后,笔者有了用计算机实现行列式运算的想法.这样做的目的,一是巩固自己对相关概念的理解,二是通过独立设计算法练手,三是希望通过图表直观地展现涉及的两种算 ...

  4. C语言求行列式的值

    #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <window ...

  5. Herding(hdu4709)三点运用行列式求面积

    Herding Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. C#程序计算N阶行列式的值及N元一次方程组

    C#程序计算N阶行列式的值及N元一次方程组 用了挺长时间自行完成了C#程序计算N阶行列式的值及N元一次方程组.由于自己没有在网上查阅其他资料,所以只能硬着头皮用最朴素的思想和基础的算法进行编程.在给出 ...

  7. 延迟求值-如何让Lo-Dash再提速x100?

    「注释」作者在本文里没有说明这么一个事实: 目前的版本Lo-Dash v2.4.1并没有引入延迟求值的特性,Lo-Dash 3.0.0-pre中部分方法进行了引入,比如filter(),map(),r ...

  8. python迭代器实现斐波拉契求值

    斐波那契数列(Fibonacci sequence),又称黄金分割数列,也称为"兔子数列":F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*).例 ...

  9. 表达式求值(noip2015等价表达式)

    题目大意 给一个含字母a的表达式,求n个选项中表达式跟一开始那个等价的有哪些 做法 模拟一个多项式显然难以实现那么我们高兴的找一些素数代入表达式,再随便找一个素数做模表达式求值优先级表 - ( ) + ...

随机推荐

  1. iOS----------禁止输入汉字

    说明: ^.*[\u4e00-\u9fa5].*$ 是否包含中文^[\u4E00-\u9FA5]+$ 是否全中文 - (BOOL)textField:(UITextField *)textField ...

  2. android集成twitter登录

    Twitter曾经举行了自己四年以来的第一场开发者大会.而这场名为“Flight”的大会,也是以后它的年度惯例. 这次大会的主题也完全围绕开发者进行.大会的焦点是一个名叫Fabric的新SDK,里面包 ...

  3. 面相服务的架构SOA

    SOA体系结构是基于服务组件模型,将应用程序的不同功能单元通过定义良好的接口契约联系起来,接口是采用中立方式进行定义的,独立于实现服务的硬件平台,操作系统和编程语言.使得构建在这样的系统中的服务可以以 ...

  4. 在Windows 10中截取截图的6种方式 简介

    在Windows 10中截取截图的6种方式 简介 截图对于不同的目的很重要.它可以用于捕获笔记本电脑上的任何内容的截图.所以,如果你使用Windows 10,你可能不知道如何截图,因为它是比较新的.因 ...

  5. 我的ElasticSearch之ElasticSearch安装配置环境

    最近一段时间比较忙,都很少来园子逛了,刚好,用到了ElasticSearch,感觉还不错,所以就给大家推荐一下,自己也顺便学习:虽然公司选择用ElasticSearch,但是以前都没有用过这个,而且公 ...

  6. docker容器日志收集方案(方案二 filebeat+syslog本地日志收集)

    与方案一一样都是把日志输出到本地文件系统使用filebeat进行扫描采集 不同的是输出的位置是不一样的 我们对docker进行如下设置 sudo docker service update  --lo ...

  7. 英语口语练习系列-C18-Wildest Dreams

    词汇复习 actor 演员 afternoon 下午 alive 活着的 apple 苹果 adjective 形容词 air 空气 animal 动物 April 四月 adult 成年人 airp ...

  8. topjui中datagrid增删改查

    1.掌握datagrid的创建方式在html中直接定义与在js中定义 可参考easyui的官方文档:http://www.jeasyui.net/plugins/183.html 2.实现代码如下:重 ...

  9. tian

    上次后来没继续在微信上聊,是因为快过年了,想趁那段时间结合年假做点东西.接下来阳历三四月份就受美国制裁.结果接下来制裁.fang. 16年的那次主要是生气,在一块儿 另外经济上也有问题. 我也想过不再 ...

  10. Redis内存优化memory-optimization

    https://redis.io/topics/memory-optimization  官方文档 一.特殊编码: 自从Redis 2.2之后,很多数据类型都可以通过特殊编码的方式来进行存储空间的优化 ...