代码如下

#include <bits/stdc++.h>
using namespace std;
const int maxn=105;

int n;
double g[maxn][maxn];

void read_and_parse(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)for(int j=1;j<=n+1;j++)scanf("%lf",&g[i][j]);
}
void solve(){
    for(int i=1;i<=n;i++){
        int now=i;
        for(int j=i+1;j<=n;j++)if(fabs(g[now][i])<fabs(g[j][i]))now=j;//找到一个系数最大的行,可以减少精度误差
        if(i!=now)for(int j=i;j<=n+1;j++)swap(g[i][j],g[now][j]);
        if(g[i][i]==0){
            printf("No Solution\n");
            return;
        }
        for(int j=i+1;j<=n;j++){
            double z=g[j][i]/g[i][i];
            for(int k=i;k<=n+1;k++)g[j][k]-=z*g[i][k];
        }
    }
    for(int i=n;i>=1;i--){//加入回代过程,可以减少精度误差
        for(int j=i+1;j<=n;j++)g[i][n+1]-=g[i][j]*g[j][n+1];
        g[i][n+1]/=g[i][i];
    }
    for(int i=1;i<=n;i++)printf("%.2lf\n",g[i][n+1]);
}
int main(){
    read_and_parse();
    solve();
    return 0;
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。