一直WA7求调
查看原帖
一直WA7求调
757410
Keith_楼主2024/3/3 22:58
void solve(){
    int n;
    cin >> n;
    vector<vector<double >> a(n+1,vector<double >(n+1));
    vector<double > b(n+1);
    for(int i = 1; i <= n; i ++ ){
        for(int j = 1; j <= n; j ++ ){
            cin >> a[i][j];
        }
        cin >> b[i];
    }
    double  eps = 1e-10;
    auto guass = [&]()->void{
        int u = 1;  
        for(int j = 1; j <= n; j ++ ){
            for(int i = u+1; i <= n; i ++ ){
                if(fabs(a[i][j]) > fabs(a[u][j])){
                    swap(a[i],a[u]);
                    swap(b[i],b[u]);
                }   
            }
            if(fabs(a[u][j]) < eps)continue;
            for(int i = 1; i <= n; i ++ ){
                if(i == u)continue;
                if(fabs(a[i][j]) < eps)continue;
                double  delta = a[i][j] / a[u][j];
                for(int k = j; k <= n; k ++ ){
                    a[i][k] -= a[u][k] * delta;
                }
                b[i] -= b[j] * delta;
            }
            u ++;
        }
        for(int i = u; i <= n; i ++ ){
            if(fabs(b[i]) >= eps){
                cout << "-1";
                return;
            }
        }
        if(u <= n)cout << "0";
        else{
            for(int i = 1; i <= n; i ++ ){
                cout << "x" << i << "=" << b[i] / a[i][i] << '\n';
            }
        }
    };
    guass();
}   
2024/3/3 22:58
加载中...