90pts求助
查看原帖
90pts求助
1199534
ycy1124楼主2025/2/7 10:12
#include<bits/stdc++.h>
using namespace std;
int n;
double ans[105];
struct Node{
    double w[105];
}a[105];
bool bj;
signed main(){
    ios::sync_with_stdio(0),cin.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n+1;j++){
            cin>>a[i].w[j];
        }
    }
    for(int i=1;i<=n;i++){
        int tmp=i;
        for(int j=i;j<=n;j++){
            if(a[j].w[i]>a[tmp].w[i]||a[tmp].w[i]==0){
                tmp=j;
            }
        }
        if(a[tmp].w[i]==0){
            bj=1;
            continue;
        }
        for(int j=i;j<=n;j++){
            if(j==tmp){
                continue;
            }
            for(int k=n+1;k>=i;k--){
                a[j].w[k]-=a[j].w[i]/a[tmp].w[i]*a[tmp].w[k];
            }
        }
        swap(a[tmp],a[i]);
        // for(int j=i;j<=n;j++){
        //     for(int k=1;k<=n+1;k++){
        //         printf("%.2lf ",a[j].w[k]);
        //     }
        //     printf("\n");
        // }
    }
    for(int i=n;i>=1;i--){
        for(int j=n;j>=i+n-n;j--){
            a[i].w[n+1]-=ans[j]*a[i].w[j];
        }
        if(a[i].w[n+1]!=0&&a[i].w[i]==0){
            printf("-1");
            return 0;
        }
        else if(a[i].w[i]==0){
            bj=1;
            continue;
        }
        ans[i]=a[i].w[n+1]/a[i].w[i];
    }
    if(bj){
        printf("0");
        return 0;
    }
    for(int i=1;i<=n;i++){
        printf("x%d=%.2lf\n",i,ans[i]);
    }
    return 0;
}

判断无数解出错求调

2025/2/7 10:12
加载中...