Unaccepted 100pts求助(悬2关)

P2455 [SDOI2006] 线性方程组

gghack_Nythix @ 2024-08-04 09:01:02

rt,请指出我源代码的问题,不要直接发给我你的AC代码。

#include<bits/stdc++.h>
using namespace std;
int n;
double a[1005][1005];
double check[1005];
void Consumption() {
    // int row = 1;
    for(int i = 1;i <= n;++i) {
        for(int j = i + 1;j <= n;++j) {
            if(fabs(a[j][i]) > 1e-2) {for(int k = 1;k <= n + 1;++k) swap(a[i][k],a[j][k]); break;}
        }
        if(fabs(a[i][i]) < 1e-12) continue;
        for(int j = 1;j <= n;++j) {
            if(j == i) continue;
            double rt = a[j][i] / a[i][i];
            for(int k = i;k <= n + 1;++k) a[j][k] -= a[i][k] * rt;
        }
        // ++row;
    }
    bool flag2 = 0;
    for(int i = 1;i <= n;++i){
        bool flag = 0;
        for(int j = 1;j <= n;++j){
             if(fabs(a[i][j]) > 1e-12) flag = 1;
        }
        if(!flag){
            flag2 = 1;
            if(fabs(a[i][n + 1]) > 1e-12) return cout << "-1\n",void();
        } 
    }
    if(flag2) {
        return cout << "0\n",void();    
    }
    for(int i = 1;i <= n;++i) cout << "x" << i << "=" << fixed << setprecision(2) << double(a[i][n + 1] / a[i][i]) << '\n';
    return ;
}
signed main(){
    cin >> n;
    for(int i = 1;i <= n;++i) for(int j = 1;j <= n + 1;++j) cin >> a[i][j];
    return Consumption(),0;
}

by szh_AK_all @ 2024-08-04 09:34:28

@gghack_Nythix

for(int i = 1;i <= n;++i) {
        for(int j = row + 1;j <= n;++j) {
            if(fabs(a[j][row]) > 1e-2) {for(int k = 1;k <= n + 1;++k) swap(a[row][k],a[j][k]); break;}
        }

这个判断消除行不是if(fabs(a[j][row]) > 1e-2)


by gghack_Nythix @ 2024-08-04 10:46:05

@szh_AK_all 一定要选择系数最大的消除吗?(刚刚听课去了抱歉)。


by szh_AK_all @ 2024-08-04 10:47:02

@gghack_Nythix

嗯,不然可能会出现精度,什么的问题


by Zisyhfollower @ 2024-08-04 10:47:50

@szh_AK_all 好的,我再去改一下,有什么不懂的再来问您。(小号)


by szh_AK_all @ 2024-08-04 10:48:24

@Zisyhfollower

ok


by gghack_Nythix @ 2024-08-04 11:17:10

@szh_AK_all 太好了,现在对了,原来是高斯消元的时候搞错了。


by gghack_Nythix @ 2024-08-04 11:17:23

@gghack_Nythix 已经关注了


by gghack_Nythix @ 2024-08-04 11:17:37

@jmy2012 感谢,关注了


by szh_AK_all @ 2024-08-04 11:22:05

@gghack_Nythix

好的好的


by 2024ing @ 2024-10-14 21:05:16

@gghack_Nythix 试一下这个数据

4
0 0 2 1 2
0 0 0 1 1
0 0 0 0 0
0 0 1 1 1

正确答案应为-1 看下这个


上一页 | 下一页