博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷.3389.[模板]高斯消元法
阅读量:5039 次
发布时间:2019-06-12

本文共 1461 字,大约阅读时间需要 4 分钟。

#include 
#include
#include
const int N=105;const double eps=1e-10;int n;inline bool bigger(double a,double b) {return std::fabs(a)>std::fabs(b);}inline bool cmp(double a) {return std::fabs(a)>eps;}struct Gauss{ double f[N][N],ans[N]; void Init() { for(int i=1; i<=n; ++i) for(int j=1; j<=n+1; ++j) scanf("%lf",&f[i][j]); } bool Solve() { for(int j=1; j<=n; ++j) { int mxrow=j; for(int i=j+1; i<=n; ++i) if(bigger(f[i][j],f[mxrow][j])) mxrow=i; if(mxrow!=j) std::swap(f[j],f[mxrow]);// for(int i=1; i<=n+1; ++i)// std::swap(f[j][i],f[mxrow][i]); for (int i=j+1; i<=n; ++i) if(cmp(f[i][j])) { double t=f[i][j]/f[j][j]; for(int k=1; k<=n+1; ++k) f[i][k]-=f[j][k]*t; } } for(int i=n; i; --i) { if(!cmp(f[i][i])) return 0; for(int j=i+1; j<=n; ++j) f[i][n+1]-=f[i][j]*ans[j]; ans[i]=f[i][n+1]/f[i][i]; } return 1; } void Print() { for(int i=1; i<=n; ++i) printf("%.2lf\n",ans[i]); }}g;int main(){ scanf("%d",&n); g.Init(); if(g.Solve()) g.Print(); else printf("No Solution"); return 0;}

转载于:https://www.cnblogs.com/SovietPower/p/8445550.html

你可能感兴趣的文章
html5实现移动端下拉刷新(原理和代码)
查看>>
iPhone开发中从一个视图跳到另一个视图有三种方法:
查看>>
pytho logging
查看>>
一个Java程序员应该掌握的10项技能
查看>>
c#英文大小写快捷键
查看>>
tpframe免费开源框架又一重大更新
查看>>
一.go语言 struct json相互转换
查看>>
什么是架构设计
查看>>
程序员学习能力提升三要素
查看>>
PHP 微信错误状态返回码说明
查看>>
【4.1】Python中的序列分类
查看>>
ubuntu 移动文件
查看>>
Easy Mock
查看>>
看看 Delphi XE2 为 VCL 提供的 14 种样式
查看>>
Python内置函数(29)——help
查看>>
机器学习系列-tensorflow-01-急切执行API
查看>>
SqlServer 遍历修改字段长度
查看>>
Eclipse快捷键:同时显示两个一模一样的代码窗口
查看>>
《架构之美》阅读笔记05
查看>>
《大道至简》读后感——论沟通的重要性
查看>>