rt。求助
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
double Gcc[100][100],result[100];
int n;
int check(int i){
bool freedom=false;
for(int j=1; j<=n; j++)
if(fabs(Gcc[i][j])>1e-8)
freedom=true;
if(!freedom){
// cout<<result[i]<<"\n";
if(fabs(result[i])>1e-8)
return -1;
else
return 0;
}
else
return 1;
}
int gsxy(){
for(int i=1; i<=n; i++){
for(int j=i; j<=n; j++)
if(fabs(Gcc[j][i])>1e-8){
for(int k=1; k<=n; k++)
swap(Gcc[j][k],Gcc[i][k]);
swap(result[i],result[j]);
}
if(Gcc[i][i]<=1e-8){
int p=check(i);
if(p!=1)
return p;
}
for(int j=1; j<=n; j++)
if(j!=i&&fabs(Gcc[i][i])>1e-8){
double z=Gcc[j][i]/Gcc[i][i];
for(int k=i; k<=n; k++)
Gcc[j][k]=Gcc[j][k]-Gcc[i][k]*z;
result[j]=result[j]-result[i]*z;
}
}
for(int i=1; i<=n; i++){
int p=check(i);
if(p!=1)
return p;
}
return 1;
}
int main(){
cin>>n;
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++)
cin>>Gcc[i][j];
cin>>result[i];
}
int v=gsxy();
if(v!=1){
cout<<v;
return 0;
}
for(int i=1; i<=n; i++)
printf("x%d=%.2lf\n",i,(result[i]/Gcc[i][i]+1e-6));
return 0;
}