const int maxn = 111; //方程大小
int m, n; // 行号 列号
double a[maxn][maxn], x[maxn]; //x为结果
void Gauss() {
double d = 0, t = 0, sum = 0;
int k = 1, l = 0, i = 0, j = 0;
while (k <= n) {
//*****选主元素*****
d = a[k][k];
l = k;
for (i = k + 1; i <= n; i++) {
if (fabs(a[i][k]) > fabs(d)) {
d = a[i][k];
l = i;
}
}
if (l != k) {
for (j = k; j <= n; j++) {
swap( a[l][j] , a[k][j]);
}
swap( x[k] , x[l]);
}
//*****消元*****//
for (j = k + 1; j <= n; j++) {
a[k][j] = a[k][j] / a[k][k];
}
x[k] = x[k] / a[k][k];
for (i = k + 1; i <= n; i++) {
for (j = k + 1; j <= n; j++) {
a[i][j] = a[i][j] - a[i][k] * a[k][j];
}
j = 1;
x[i] = x[i] - a[i][k] * x[k];
}
k++;
}
//*****回代*****
for (i = n - 1; i >= 1; i--) {
sum = 0;
for (j = i + 1; j <= n; j++) {
sum = sum + a[i][j] * x[j];
}
x[i] = x[i] - sum;
}
}