无解/无限解怎么判?
查看原帖
无解/无限解怎么判?
1046406
COLE_WATER楼主2024/9/21 08:16

代码如下

#include <bits/stdc++.h>

using namespace std;

const int N = 105;
int n;
double a[N][N];

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n + 1; j++)
            cin >> a[i][j];
    cout << fixed << setprecision(2);
    for (int i = 1; i <= n; i++) {
        int p = i;
        while (p <= n && !a[p][i]) p++;
        if (p == n + 1) {
            continue;
        }
        swap(a[i], a[p]);
        double fac = a[i][i];
        if (fac == 0) {
            cout << 0;
            return 0;
        }
        for (int j = 1; j <= n + 1; j++)
            a[i][j] /= fac;
        for (int j = 1; j <= n; j++) {
            if (i == j) continue;
            fac = a[j][i];
            for (int k = 1; k <= n + 1; k++)
                a[j][k] -= fac * a[i][k];
        }
    }
    for (int j = 1; j <= n; j++) {
        bool f = false;
        for (int k = 1; k <= n; k++)
            f |= (bool)a[j][k];
        if (!f) {
            if (a[j][n + 1]) cout << -1;
                else cout << 0;
                return 0;
        }
    }
    for (int i = 1; i <= n; i++)
        cout << "x" << i << "=" << a[i][n + 1] << endl;
    return 0;
}

谢谢!

2024/9/21 08:16
加载中...