高斯消元模板
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; const int maxn=201; typedef double Matrix[maxn][maxn]; void gauss(Matrix A,int n) //消元过程 { int i,j,k,r; for(i=0;i<n;i++) { r=i; for(j=i+1;j<n;j++) if(fabs(A[j][i])>fabs(A[r][i])) r=j; if(r!=i) for(j=0;j<=n;j++) swap(A[r][j],A[i][j]); for(j=n;j>=i;j--) for(k=i+1;k<n;++k) A[k][j]-=A[k][i]/A[i][i]*A[i][j]; } for(i=n-1;i>=0;i--) { for(j=i+1;j<n;j++) A[i][n]-=A[j][n]*A[i][j]; A[i][n]/=A[i][i]; } } Matrix A; int main() { int n; while(cin>>n) { for(int i=0;i<n;i++) for(int j=0;j<=n;j++) scanf("%lf",&A[i][j]); gauss(A,n); for(int i=0;i<n-1;i++) //A[i][n]就是所求的解 printf("%lf ",A[i][n]); printf("%lf ",A[n-1][n]); } return 0; }