社区讨论

蒟蒻刚学OI,你猜是不是妹子,求助!

P2455[SDOI2006] 线性方程组参与者 5已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mi868jgq
此快照首次捕获于
2025/11/21 09:18
4 个月前
此快照最后确认于
2025/11/21 09:18
4 个月前
查看原帖
RT,高斯消元WA90,求大佬帮忙查错QAQ
CPP
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
struct data{
    double f[101];
}t[101];
int n,q[101],cnt=0;
double eps=0.0000001;
int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++)for(int j=0;j<=n;j++)scanf("%lf",&t[i].f[j]);
    for(int i=0;i<n;i++){
        int p=i;
        for(int j=i+1;j<n;j++)if(fabs(t[j].f[i])-fabs(t[p].f[i])>eps)p=j;
        swap(t[p],t[i]);
        if(fabs(t[i].f[i])<eps){
            cnt++;
            q[cnt]=i;
            continue;
        }
        for(int j=i+1;j<=n;j++)t[i].f[j]/=t[i].f[i];
        for(int j=0;j<n;j++)if(i!=j)for(int k=i+1;k<=n;k++)t[j].f[k]-=t[j].f[i]*t[i].f[k];
    }
    if(cnt==0){
        for(int i=0;i<n;i++){
            if(fabs(t[i].f[n])<eps)printf("x%d=0\n",i+1);
            else printf("x%d=%.2lf\n",i+1,t[i].f[n]);
        }
    }else{
        for(int i=1;i<cnt;i++){
            if(fabs(t[q[i]].f[n])>eps){
                printf("-1");
                return 0;
            }
        }
        printf("0");
        return 0;
    }
}

回复

5 条回复,欢迎继续交流。

正在加载回复...