高斯消元法(高斯·约当消元法)(整数)

    xiaoxiao2021-03-26  32

    整数高斯消元作用在于最后得出的解可以判断是否为整数。

    首先看高斯消元法(浮点) 整数的高斯消元法,在消元时通过等式乘法,将同一项系数统一成它的最小公倍数,然后再进行消元。

    核心代码:

    int n,A[MAXN][MAXN*2]; int gcd(int a,int b){return b==0?a:gcd(b,a%b);} int lcm(int a,int b){return a/gcd(a,b)*b;} void Gauss() { int r,c,mxr,n=N,m=N*2+1,l,ta,tb; for(r=1,c=1;r<=n&&c<m;r++,c++) { mxr=r; for(int i=r+1;i<=n;i++) if(abs(A[i][c])>abs(A[mxr][c])) mxr=i; if(A[mxr][c]==0) {r--;continue;} if(mxr!=r)swap(A[mxr],A[r]); for(int i=1;i<=n;i++) if(i!=r&&A[i][c]) { l=lcm(abs(A[i][c]),abs(A[r][c])); ta=l/A[i][c]; tb=l/A[r][c]; for(int j=c;j<=m;j++) A[i][j]=A[i][j]*ta-A[r][j]*tb; if(i<c) A[i][i]*=ta; } } }

    因为没找到整数高斯消元裸题,所以没有完整代码。。。

    转载请注明原文地址: https://ju.6miu.com/read-660863.html

    最新回复(0)