高斯消元可以用来求解未知数个数与方程个数相等的线性方程组
无解或者有无穷多解时返回0,有唯一解时返回1
时间复杂度(O(n^3))
const int maxn=60;
double a[maxn][maxn],ans[maxn];
int gauss(int n,int m){
for(int row=0,col=0;row<n && col<m;row++,col++){
int maxi=row;
for(int i=row+1;i<n;i++){
if(fabs(a[i][col])>fabs(a[m][col])) maxi=i;
}
if(fabs(a[maxi][col])<eps) return 0;
if(row!=maxi){
for(int j=col;j<m;j++) swap(a[row][j],a[maxi][j]);
swap(ans[row],ans[maxi]);
}
ans[row]/=a[row][col];
for(int j=col+1;j<m;j++) a[row][j]/=a[row][col];
a[row][col]=1;
for(int i=0;i<n;i++){
if(i!=row){
ans[i]-=ans[row]*a[i][col];
for(int j=col+1;j<m;j++){
a[i][j]-=a[row][j]*a[i][col];
}
a[i][col]=0;
}
}
}
return 1;
}