src/jiangly/math/16-Gauss-Elimination.hpp
Code
/** 高斯消元(guess)【久远】
* 2020-12-02: https://www.codechef.com/viewsolution/39942900
**/
std::vector<double> gauss(std::vector<std::vector<double>> a, std::vector<double> b) {
int n = a.size();
for (int i = 0; i < n; ++i) {
double x = a[i][i];
for (int j = i; j < n; ++j) a[i][j] /= x;
b[i] /= x;
for (int j = 0; j < n; ++j) {
if (i == j) continue;
x = a[j][i];
for (int k = i; k < n; ++k) a[j][k] -= a[i][k] * x;
b[j] -= b[i] * x;
}
}
return b;
}
#line 1 "src/jiangly/math/16-Gauss-Elimination.hpp"
/** 高斯消元(guess)【久远】
* 2020-12-02: https://www.codechef.com/viewsolution/39942900
**/
std::vector<double> gauss(std::vector<std::vector<double>> a, std::vector<double> b) {
int n = a.size();
for (int i = 0; i < n; ++i) {
double x = a[i][i];
for (int j = i; j < n; ++j) a[i][j] /= x;
b[i] /= x;
for (int j = 0; j < n; ++j) {
if (i == j) continue;
x = a[j][i];
for (int k = i; k < n; ++k) a[j][k] -= a[i][k] * x;
b[j] -= b[i] * x;
}
}
return b;
}
Back to top page