附:代码
```cpp
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1010;
int n,row[maxn];//row: 本行非空列
double a[maxn][maxn], b[maxn];
double x[maxn];
bool use[maxn];//use: 本行是否使用过
inline int getmaxline(const int& row) {
int ans = 0;//默认为0,如返回0,则说明所有行绝对值都是0,即 无数解或无解
double mx = 0;
for (int i = 1; i <= n; ++i)
if (!use[i] && abs(a[i][row]) > mx)
ans = i,
mx = abs(a[i][row]);
return ans;
}
inline void addto(const int& i, const int& j, const int& beg, const double& v) {
b[j] += b[i] * v;
for (int k = beg; k <= n; ++k)
a[j][k] += a[i][k] * v;
}
int main() {
cin >> n;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j)
cin >> a[i][j];
cin >> b[i];
}
for (int i = 1; i <= n; ++i) {
int li = getmaxline(i);
if (li == 0)
return cout << "No Solution\n",0;
use[li] = 1;
row[li] = i;
for (int j = 1; j <= n; ++j) {
if (j == li) continue;
addto(li, j, i, -a[j][i] / a[li][i]);
}
}
for (int i = 1; i <= n; ++i)
x[row[i]] = b[i] / a[i][row[i]];
for (int i = 1; i <= n; ++i)
cout << fixed << setprecision(2) << x[i] << '\n';
}
```
by Editzed @ 2022-09-25 18:02:11
这种情况大概率是写了UB,我来查查
by Etinorally @ 2022-09-25 18:05:41
@[Editzed](/user/515990) 不是你这个代码不是能AC吗?
by Etinorally @ 2022-09-25 18:06:32
开了 o2 就会 wa 一个点,绝对ub
by Krystallos @ 2022-09-25 18:14:50
@[Editzed](/user/515990) 你为什么不加`return 0`?
by OoXiao_QioO @ 2022-09-25 18:29:39
原因是你没有判 $a_{i,i}<=eps$
by beauty_son_whm @ 2022-10-21 19:55:40
@[Editzed](/user/515990)
by beauty_son_whm @ 2022-10-21 19:55:59