80pts WA求调
查看原帖
80pts WA求调
643818
I_AK_CTS楼主2024/5/1 16:37
#include <bits/stdc++.h>
using namespace std;
const int N = 105;
const double EPS = 1e-9;
int n;
double a[N][N];
double ans[N];
int main() {
	cin >> n;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n + 1; j++)
			cin >> a[i][j];
	for (int i = 1; i <= n; i++) {
		int id = i;
		for (int j = i + 1; j <= n; j++)
			if (fabs(a[id][i]) < fabs(a[j][i])) id = j;
		if (fabs(a[id][i]) < EPS) {
			if (fabs(a[id][n + 1]) < EPS) cout << 0 << endl;
			else cout << -1 << endl;
			return 0;
		}
		if (id != i) {
			for (int j = 1; j <= n + 1; j++) 
				swap(a[id][j], a[i][j]);
		}
		double d = a[i][i];
		for (int j = i; j <= n + 1; j++) a[i][j] /= d;
		for (int j = i + 1; j <= n; j++) {
			d = a[j][i];
			for (int k = i; k <= n + 1; k++) a[j][k] -= a[i][k] * d;
		}
	}
	ans[n] = a[n][n + 1];
	for (int i = n - 1; i >= 1; i--) {
		ans[i] = a[i][n + 1];
		for (int j = i + 1; j <= n; j++) ans[i] = ans[i] - ans[j] * a[i][j];
	}
	for (int i = 1; i <= n; i++) printf("x%d=%.2lf\n", i, ans[i]);
	return 0;
}
2024/5/1 16:37
加载中...