分析
其实应该还是比较好理解的东西?
每次把第i项是最大的一列提到第i列,然后将后面所有列的第i项消去。
给出系数a[N][M],求解C[M]
对于任意的i满足
∑j=1mai,j∗cj=0
∑
j
=
1
m
a
i
,
j
∗
c
j
=
0
注意:C[M]=1 ,也就是说a[i][M]是常数项
code
#include<bits/stdc++.h>
#define db double
using namespace std;
struct Gauss{
#define M 1005
int n,m;
/*
n条m项
答案在c[]
*/
db a[M][M],c[M];
void solve(){
int i,j,k,id;
for (i=1;i<m;i++){
id=i;
for (j=i+1;j<=n;j++)if (fabs(a[id][i])<fabs(a[j][i]))id=j;
for (j=1;j<=m;j++)swap(a[id][j],a[i][j]);
for (j=i+1;j<=n;j++){
db p=a[j][i]/a[i][i];
for (k=i;k<=m;k++)a[j][k]-=a[i][k]*p;
}
}
for (i=m-1;i;i--){
for (j=i+1;j<m;j++)a[i][m]-=a[i][j]*c[j];
c[i]=a[i][m]/a[i][i];
}
}
}gauss;
int main(){
return 0;
}