#include<cstdio>
#include<cmath>
const double EPS=1E-8;
double B[110][110];
int n;
int main(){
scanf("%d",&n);
for (int i=0;i<n;i++){
for (int j=0;j<n;j++)
scanf("%lf",&B[i][j]);//读入系数
scanf("%lf",&B[i][n]);//读入值
}
for (int i=0;i<n;i++){
int pivot=i;
for(int j=i;j<n;j++)//选择一个当前位置系数绝对值最大的调换过来,防止误差
if (fabs(B[j][i]-B[pivot][i])<=EPS) pivot=j;
for(int j=0;j<=n;j++){//交换操作,要将所有的全部交换过来(或者 swap)
double t=B[i][j];
B[i][j]=B[pivot][j];
B[pivot][j]=t;
}
if(fabs(B[i][i])<=EPS){//最大值等于0则说明该列都为0,肯定无解 (因为上一步把最大的放在了第i行)
printf("No Solution\n");
return 0;
}
for(int j=i+1;j<=n;j++)
B[i][j]/=B[i][i];//将该位的系数变为1
for(int j=0;j<n;j++)
if (i!=j)
for(int k=i+1;k<=n;k++)
B[j][k]-=B[j][i]*B[i][k];//将其他方程用加减法减去系数值
}
for (int i=0;i<n;i++)
printf("%.2lf\n",B[i][n]);//最后输出结果。
return 0;
}
高斯消元法详细解释: https://www.luogu.com.cn/blog/pks-LOVING/p3389-mu-ban-gao-si-xiao-yuan-fa
(就线性代数)