代码如下
#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;
}
谢谢!