链接:

https://www.luogu.org/problem/P3389

题意:

给定一个线性方程组,对其求解

思路:

高斯消元,从第一项消到最后一项,消成一个上三角矩阵.再从最后一项依次向上回带.

在消每一项的时候找到系数最大的一项开始消,将其系数置位1,再向下消,具体做法百度太多了.

代码:

#include <bits/stdc++.h>
using namespace std; double Map[110][110];
double ans[110];
double eps = 1e-7;
int n; bool Guess()
{
for (int i = 1;i <= n;i++)
{
int ml = i;
for (int j = i+1;j <= n;j++)
{
if (fabs(Map[ml][i]) < fabs(Map[j][i]))
ml = j;
}
if (fabs(Map[ml][i]) < eps)
return false;
if (ml != i)
swap(Map[ml], Map[i]);//换行
double div = Map[i][i];
for (int j = i+1;j <= n+1;j++)
Map[i][j] /= div;//讲要消的列系数变为1
for (int j = i+1;j <= n;j++)
{
div = Map[j][i];//消的值对应系数
for (int k = i;k <= n+1;k++)
Map[j][k] -= div*Map[i][k];//消元
}
}
ans[n] = Map[n][n+1];
//回带
for (int i = n-1;i >= 1;i--)
{
ans[i] = Map[i][n+1];
for (int j = i+1;j <= n;j++)
ans[i] -= (Map[i][j]*ans[j]);
}
} int main()
{
scanf("%d", &n);
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= n+1;j++)
scanf("%lf", &Map[i][j]);
}
if (Guess())
{
for (int i = 1;i <= n;i++)
printf("%.2lf\n", ans[i]);
}
else
printf("No Solution"); return 0;
}

洛谷-P3389-高斯消元模板的更多相关文章

  1. 洛谷P3389 高斯消元 / 高斯消元+线性基学习笔记

    高斯消元 其实开始只是想搞下线性基,,,后来发现线性基和高斯消元的关系挺密切就一块儿在这儿写了好了QwQ 先港高斯消元趴? 这个算法并不难理解啊?就会矩阵运算就过去了鸭,,, 算了都专门为此写个题解还 ...

  2. 【Luogu】P3389高斯消元模板(矩阵高斯消元)

    题目链接 高斯消元其实是个大模拟qwq 所以就着代码食用 首先我们读入 ;i<=n;++i) ;j<=n+;++j) scanf("%lf",&s[i][j]) ...

  3. 高斯消元模板!!!bzoj1013

    /* 高斯消元模板题 n维球体确定圆心必须要用到n+1个点 设圆心坐标(x1,x2,x3,x4...xn),半径为C 设第i个点坐标为(ai1,ai2,ai3,,,ain)那么对应的方程为 (x1-a ...

  4. HDU 3359 高斯消元模板题,

    http://acm.hdu.edu.cn/showproblem.php?pid=3359 题目的意思是,由矩阵A生成矩阵B的方法是: 以a[i][j]为中心的,哈曼顿距离不大于dis的数字的总和 ...

  5. Luogu P3389 高斯消元

    https://www.luogu.com.cn/problem/P3389 主元消元法[模板] 高斯消元是解决多元线性方程组的方法,再学习它之前,先引入一个东西--行列式 行列式的性质: 这里我们只 ...

  6. 高斯消元模板(pascal)

    洛谷P3389评测 program rrr(input,output); const eps=1e-8; var a:..,..]of double; n,i,j,k:longint; t:doubl ...

  7. 【转】高斯消元模板 by kuangbin

    写的很好,注释很详细,很全面. 原blog地址:http://www.cnblogs.com/kuangbin/archive/2012/09/01/2667044.html #include< ...

  8. kuangbin大佬的高斯消元模板

    dalao解释的博客 #include <bits/stdc++.h> using namespace std; ; int a[MAXN][MAXN];//增广矩阵 int x[MAXN ...

  9. java高斯消元模板

    //package fuc; import java.io.PrintStream; import java.math.BigInteger; import java.util.Scanner; pu ...

随机推荐

  1. python 爬虫 urllib模块 发起post请求

    urllib模块发起的POST请求 案例:爬取百度翻译的翻译结果 1.通过浏览器捉包工具,找到POST请求的url 针对ajax页面请求的所对应url获取,需要用到浏览器的捉包工具.查看百度翻译针对某 ...

  2. Python全栈开发之3、深浅拷贝、变量和函数、递归、函数式编程、内置函数

    一.深浅拷贝 1.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import copy # 定义变量 数字.字符串 # n1 = 123 n1 ...

  3. [转帖]CentOS 7安装并启动Google浏览器(★firecat亲测有效★)

    CentOS 7安装并启动Google浏览器(★firecat亲测有效★) https://blog.csdn.net/libaineu2004/article/details/82821405 自己 ...

  4. vc_redist x64 或者x86下载地址

    https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads 微软的东西,果然还是人 ...

  5. 15、R语言聚类树的绘图原理

    聚类广泛用于数据分析.去年研究了一下R语言聚类树的绘图原理.以芯片分析为例,我们来给一些样品做聚类分析.聚类的方法有很多种,我们选择Pearson距离.ward方法. 选择的样品有: "GS ...

  6. JavaScript的数组方法(array)

    数组方法: 1. concat()  合并数组 2. join()  将数组的元素拼接成字符串,并指定分隔符 3. push()  往数组末尾添加一个元素,并返回新的数组的长度 4. reverse( ...

  7. Git复习(四)之解决冲突

    解决冲突 合并分支往往也不是一帆风顺的 假设:我们从master创建了一个新的分支feature1更改了最后一行提交,我们切换到master分支也更改了最后一行提交,现在,master分支和featu ...

  8. qt webengineview 设置背景颜色

    当使用qwebengineview加载网页的使用,可以通过网页端的css设置网页的显示效果 但是当窗口大小改变的时候,你会发现网页的resize速度赶不上窗口的resize速度,这是会出现白色空白,而 ...

  9. springboot(二十二)-sharding-jdbc-读写分离

    前面我们使用sharding-jdbc配置了分库分表.sharding-jdbc还有个用法,就是实现读写分离. 什么时候需要或者可以使用读写分离? 当我们的项目所使用的数据库查询的访问量,访问频率,及 ...

  10. 优秀java博客

    https://www.jianshu.com/p/efb58b7115bf?utm_source=tuicool https://www.nowcoder.com/discuss/110317 ht ...