萌新刚学OI,高斯消元 60pts WA on #3#7#8#9#11,大佬路过帮忙看一下
#include<bits/stdc++.h>
using namespace std;
int n;
double mat[101][101],sol[101];
const double eps=1e-6;
int main(){
cin>>n;
for(int i=1;i<=n;++i)
for(int j=1;j<=n+1;++j)
scanf("%lf",&mat[i][j]);
int r=1;
for(int i=1;i<=n;++i){
int xfc=r;
for(int j=i+1;j<=n;++j)
if(fabs(mat[j][i])>fabs(mat[xfc][i]))
xfc=j;
if(fabs(mat[xfc][i])<eps)continue;
if(i!=xfc)swap(mat[i],mat[xfc]);
double tmp=mat[i][i];
for(int j=i;j<=n+1;++j)
mat[i][j]/=tmp;
for(int j=i+1;j<=n;++j){
tmp=mat[j][i];
for(int k=i;k<=n+1;++k)
mat[j][k]-=mat[i][k]*tmp;
}
r++;
}
sol[n]=mat[n][n+1];
for(int i=n-1;i;--i){
sol[i]=mat[i][n+1];
for(int j=i+1;j<=n;++j)
sol[i]-=(mat[i][j]*sol[j]);
}
if(r<n){
for(int i=r;i<=n;++i){
if(fabs(sol[i])>eps){
cout<<-1;
return 0;
}
}
cout<<0;
return 0;
}
for(int i=1;i<=n;++i)
printf("x%d=%.2lf\n",i,sol[i]);
}