sub1第三个点代码判为无数解了 求助
#include<bits/stdc++.h>
#define int long long
using namespace std;
const double N=1e-6;
int n;
double a[110][110];
int gauss(int n,int m){
int r=0;
for(int k=0;k<n;k++){
int piv=r;
for(int i=r;i<n;i++)
if(fabs(a[i][k])>fabs(a[piv][k]))
piv=i;
if(fabs(a[piv][k])<N)
continue;
for(int j=k;j<=m;j++)
swap(a[r][j],a[piv][j]);
for(int j=m;j>=k;j--)
a[r][j]/=a[r][k];
for(int i=r+1;i<n;i++)
if(fabs(a[i][k])>=N)
for(int j=m;j>=k;j--)
a[i][j]-=a[i][k]*a[r][j];
r++;
}
if(r<n){
for(int i=0;i<n;i++){
bool flag=0;
for(int j=0;j<m;j++)
if(fabs(a[i][j])>=N)
flag=1;
if(flag)
continue;
if(fabs(a[i][m])>=N)
return -1;
else
return 0;
}
}
for(int j=n-1;j>=0;j--)
for(int i=j-1;i>=0;i--)
a[i][m]-=a[j][m]*a[i][j];
return 1;
}
signed main(){
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<=n;j++)
cin>>a[i][j];
int t=gauss(n,n);
if(t<=0)
return cout<<t<<endl,0;
for(int i=0;i<n;i++)
printf("x%lld=%.2lf\n",i+1,a[i][n]);
return 0;
}