最后的到一个(近似)阶梯形矩阵
再把它化简成近似单位矩阵,即可得到解
模板代码
//题目背景:AcWing 883 #include#include #include using namespace std; const int N=110; const double eps=1e-8; //别把double误写成int,之所以要小于1e-8,是因为c++浮点数的一种弊端,所以小于eps时,可以近似的看作是0 double a[N][N]; //存储增广矩阵 int n; int gauss() { int r,c; //r表示当前要处理的这一行 for(r=0,c=0;c fabs(a[t][c])) t=i; if(fabs(a[t][c]) =c;i--) a[r][i] /=a[r][c]; //把这一行的第c列化成1 for(int i=r+1;i eps) { for(int j=n;j>=c;j--) a[i][j]-=a[i][c]*a[r][j]; } r++; } if(r eps) //0==非零的情况,无解 return 2; return 1; //0==0的情况,有无穷多解 } for(int i=n-1;i>=0;i--) //从下往上的把解给求出来 for(int j=i+1;j
高斯消元法解异或线性方程组 思路及步骤与高斯消元法解线性方程组一致
模板代码
//题目背景:AcWing 884 #include#include using namespace std; const int N=110; int n; int a[N][N]; int gauss() { int r,c; for(r=0,c=0;c =0;i--) for(int j=i+1;j



