AcWing 883. 高斯消元解线性方程组
原题链接
简单
作者:
wangyj
,
2020-10-24 15:00:01
,
所有人可见
,
阅读 282
#include<iostream>
#include<cmath>
using namespace std;
const double eps=1e-6;
double g[110][110];
int n;
int gs()
{
int r,c,i,j,t;
for(r=0,c=0;c<n;c++){
t=r;
for(i=r;i<n;i++)if(fabs(g[i][c])>fabs(g[t][c]))t=i;
if(fabs(g[t][c])<eps)continue;
for(i=c;i<=n;i++)swap(g[t][i],g[r][i]);
for(i=n;i>=c;i--)g[r][i]/=g[r][c];
for(i=r+1;i<n;i++)if(fabs(g[i][c])>eps)for(j=n;j>=c;j--)g[i][j]-=g[r][j]*g[i][c];
r++;
}
if(r<n){
for(i=r;i<n;i++)if(fabs(g[i][n])>eps)return 0;
return 2;
}
for(i=n-1;i>=0;i--)for(j=i+1;j<n;j++)g[i][n]-=g[i][j]*g[j][n];
return 1;
}
int main()
{
int t,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)for(j=0;j<=n;j++)scanf("%lf",&g[i][j]);
t=gs();
if(!t)cout<<"No solution"<<endl;
else if(t==2)cout<<"Infinite group solutions"<<endl;
else for(i=0;i<n;i++)printf("%.2f\n",g[i][n]);
return 0;
}