rt,调了半年了。
希望有好心人帮忙调一下,谢谢。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const double eps=1e-7;
ll n,ans;
double x[110],a[110][110];
ll solve(){
ll p=1,i=1;
for(;i<=n&&p<=n;i++,p++){
ll r=p;
for(int j=p+1;j<=n;j++)
if(fabs(a[j][i])>fabs(a[r][i])) r=j;
if(r!=p) swap(a[p],a[r]);
if(fabs(a[p][i])<eps){
p--;
continue;
}
double t=a[i][i];
for(int j=p;j<=n+1;j++) a[i][j]/=t;
for(int j=p+1;j<=n;j++)
if(fabs(a[j][i])>eps){
t=a[j][i]/a[p][i];
for(int k=i;k<=n+1;k++)
a[j][k]-=a[i][k]*t;
a[j][i]=0;
}
}
for(int j=p;j<=n;j++)
if(fabs(a[j][i])>eps) return -1;
if(p<=n) return 0;
for(int i=n;i>=1;i--){
for(int j=i+1;j<=n;j++)
a[i][n+1]-=a[i][j]*x[j];
x[i]=a[i][n+1]/a[i][i];
}
return 1;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n+1;j++) cin>>a[i][j];
srand(time(NULL));
for(int i=1;i<=n-1;i++)
for(int j=i+1;j<=n;j++)
if(rand()&1) swap(a[i],a[j]);
ans=solve();
if(ans!=1) printf("%lld",ans);
else{
for(int i=1;i<=n;i++)
if(fabs(x[i])<eps) printf("x%d=0.00\n",i);
else printf("x%d=%.2lf\n",i,x[i]+eps);
}
return 0;
}