对于以下这份非正解唐氏纯手搓代码:
#include <iomanip>
#include <iostream>
using namespace std;
const int N = 1e2, INF = 1e4;
double a[N + 3][N + 3];
int n;
int main() {
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) for (int j = 1; j <= n + 1; j++) cin >> a[i][j];
for (int j = 1; j <= n - 1; j++) {
double maxmum = -INF;
int top = 0;
for (int i = j; i <= n; i++) if (maxmum <= a[i][j]) maxmum = a[i][j], top = i;
for (int k = j; k <= n + 1; k++) swap(a[j][k], a[top][k]);
for (int i = j + 1; i <= n; i++) {
double p = -(a[i][j] / a[j][j]);
for (int k = j; k <= n + 1; k++) a[i][k] += a[j][k] * p;
}
}
for (int i = n; i >= 1; i--) {
int res = 0;
for (int j = 1; j <= n; j++) if (a[i][j] != 0) res = 1;
if (res == 0 && a[i][n + 1]) res = -1;
if (res == 0 || res == -1) {
cout << "No Solution\n";
return 0;
}
a[i][n + 1] /= a[i][i];
a[i][i] = 1.00;
for (int j = i - 1; j >= 1; j--) {
a[j][n + 1] -= a[j][i] * a[i][n + 1];
a[j][i] = 0.00;
}
}
for (int i = 1; i <= n; i++) cout << fixed << setprecision(2) << a[i][n + 1] << '\n';
return 0;
}
input:
2
3 3 6
1 1 2
本地output:
No Solution
提交结果(WA#1):
Wrong Answer.wrong answer 1st lines differ - expected: 'No Solution', found: '0.00'