整数高斯消元作用在于最后得出的解可以判断是否为整数。
首先看高斯消元法(浮点) 整数的高斯消元法,在消元时通过等式乘法,将同一项系数统一成它的最小公倍数,然后再进行消元。
核心代码:
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; } } }因为没找到整数高斯消元裸题,所以没有完整代码。。。
