高斯消元模板

来源:互联网 发布:mac系统的任务管理器 编辑:程序博客网 时间:2024/06/08 05:12
const int maxn=305;long double a[maxn][maxn];const long double eps=1e-14;int main(){    for(int i=1;i<=n;i++)    {        int p=i;        for(int j=i+1;j<=n;j++)            if(fabs(a[j][i])>eps) p=j;//找一个这一列不等于0的数        if(fabs(a[p][i])>eps)        {            for(int j=i;j<=n+1;j++) swap(a[i][j],a[p][j]);            for(int j=i+1;j<=n;j++)            {                if(fabs(a[j][i])>eps)                {                    long double k=a[j][i]/a[i][i];                    for(int t=i;t<=n+1;t++)                        a[j][t]-=a[i][t]*k;//消去这一列的其他数                }            }        }    }    for(int i=n;i>=1;i--)    {        for(int j=i+1;j<=n;j++) if(fabs(a[i][j])>eps)            a[i][n+1]-=a[i][j]*a[j][n+1];        if(abs(a[i][i])<=eps&&abs(a[i][n+1])>eps)        {            cout<<-1<<endl;            return 0;        }        a[i][n+1]/=a[i][i];    }}


0 0
原创粉丝点击