跳转至

行列式

约 3 个字 36 行代码

const int N=1e2+1;
const double eps=1e-6;
double a[N][N];
double GaussianElimination(int n)
{
    int i,maxx,j,k;
    double temp,res=1;
    for(i=0;i<n;++i)
    {
        maxx=i;
        for(j=i+1;j<n;++j)
        {
            if(fabs(a[j][i])>fabs(a[maxx][i]))
                maxx=j;
        }
        if(fabs(a[maxx][i])<eps)
            return 0.0;
        if(maxx!=i)
        {
            swap(a[maxx],a[i]);
            res=-res;
        }
        res*=a[i][i];
        for(j=0;j<n;++j)
        {
            if(j==i)
                continue;
            temp=a[j][i]/a[i][i];
            if(fabs(temp)<eps)
                continue;
            for(k=i;k<=n;++k)
                a[j][k]-=a[i][k]*temp;
        }
    }
    return res;
}