ACM模版
高斯消元
#define eps 1e-9
const int MAXN = 220;
double a[MAXN][MAXN];
double x[MAXN];
int equ, var;
int Gauss()
{
int i, j, k, col, MAX;
for (k = 0, col = 0; k < equ && col < var; k++, col++)
{
MAX = k;
for (i = k + 1; i < equ; i++)
{
if (fabs(a[i][col]) > fabs(a[MAX][col]))
{
MAX = i;
}
}
if (fabs(a[MAX][col]) < eps)
{
return 0;
}
if (k != MAX)
{
for (j = col; j < var; j++)
{
swap(a[k][j], a[MAX][j]);
}
swap(x[k], x[MAX]);
}
x[k] /= a[k][col];
for (j = col + 1; j < var; j++)
{
a[k][j] /= a[k][col];
}
a[k][col] = 1;
for (i = 0; i < equ; i++)
{
if (i != k)
{
x[i] -= x[k] * a[i][k];
for (j = col + 1; j < var; j++)
{
a[i][j] -= a[k][j] * a[i][col];
}
a[i][col] = 0;
}
}
}
return 1;
}