求问该份代码出现本机运行结果与提交评测结果不同的解释
查看原帖
求问该份代码出现本机运行结果与提交评测结果不同的解释
883309
Mushroom_1965楼主2024/10/17 19:00

对于以下这份非正解唐氏纯手搓代码:

#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'
2024/10/17 19:00
加载中...