洛谷P3389 【模板】高斯消元法
2017-01-19 13:54
453 查看
题目背景
Gauss消元
题目描述
给定一个线性方程组,对其求解
输入输出格式
输入格式:
第一行,一个正整数n
第二至n+1行,每行n+1个整数,为a1,a2...an和b,代表一组方程。
输出格式:
共n行,每行一个数,第i行为xi (保留2位小数)
如果不存在唯一解,在第一行输出"No Solution".
输入输出样例
输入样例#1:1 1 1输出样例#1:
1.00
说明
1<=n<=100, |ai|<=10000, |b|<=10000
/*by SilverN*/ #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<cmath> using namespace std; const double eps=1e-7; const int mxn=125; int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } int n; double a[mxn][mxn]; double b[mxn]; int main(){ n=read(); int i,j; for(i=1;i<=n;i++){ for(j=1;j<=n;j++) a[i][j]=read(); a[i][n+1]=read(); } for(i=1;i<=n;i++){ int p=i; for(j=i+1;j<=n;j++) if(fabs(a[j][i])>fabs(a[p][i]))p=j; if(p!=i)for(j=1;j<=n+1;j++)swap(a[i][j],a[p][j]); if(fabs(a[i][i])<eps){printf("No Solution\n");return 0;} for(j=i+1;j<=n;j++){ double x=a[j][i]/a[i][i]; for(int k=i;k<=n+1;k++){ a[j][k]-=x*a[i][k]; } } } for(i=n;i;i--){ for(j=i+1;j<=n;j++) a[i][n+1]-=a[i][j]*a[j][n+1]; a[i][n+1]/=a[i][i]; } for(i=1;i<=n;i++)printf("%.2f\n",a[i][n+1]); return 0; }
相关文章推荐
- 洛谷P3389 【模板】高斯消元法
- 洛谷P3389 【模板】高斯消元法
- 【洛谷 P3389】高斯消元法(高斯消元模板)
- 洛谷 P3389 【模板】高斯消元法
- 洛谷P3389:【模板】高斯消元法
- 洛谷 P3389 【模板】高斯消元法
- 洛谷P3389 【模板】高斯消元法
- 【洛谷】3389 【模板】高斯消元法
- P3389 【模板】高斯消元法
- P3389 【模板】高斯消元法
- 洛谷 P3389 高斯消元模板题
- 【洛谷P3389】【模板】高斯消元
- 洛谷.3389.[模板]高斯消元法
- P3389 【模板】高斯消元法
- 洛谷3389:【模板】高斯消元法——题解
- 【模板】高斯消元法
- 【洛谷】3808 【模板】AC自动机(简单版)
- 转:高斯消元法(Gauss Elimination) 分析 & 题解 & 模板——czyuan原创
- 洛谷.1919.[模板]A*B Problem升级版(FFT)
- 洛谷P3388 【模板】割点(割顶)