zoukankan      html  css  js  c++  java
  • 【高斯消元】CDOJ1783 曜酱的线性代数课堂(一)

    高斯消元求逆矩阵板子。

    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    const double EPS=0.00000001;
    #define N 105
    int n;
    double B[N][N*2],A[N][N*2],C[N][N];
    bool guass_jordan()
    {
        memcpy(B,A,sizeof(A));
        for(int i=1;i<=n;++i){
        	for(int j=n+1;j<=n*2;++j){
        		if(i==j-n){
        			B[i][j]=1.0;
        		}
        		else{
        			B[i][j]=0.0;
        		}
        	}
        }
        for(int i=1;i<=n;++i){
          	int pivot=i;
            for(int j=i+1;j<=n;++j){
            	if(fabs(B[j][i])>fabs(B[pivot][i])){
            		pivot=j;
            	}
    		}
            swap(B[i],B[pivot]);
            if(fabs(B[i][i])<EPS){
            	return 0;
            }
            for(int j=i+1;j<=n*2;++j){
            	B[i][j]/=B[i][i];
            }
            for(int j=1;j<=n;++j){
            	if(i!=j){
            		for(int k=i+1;k<=n*2;++k){
    					B[j][k]-=B[j][i]*B[i][k];
    				}
    			}
            }
        }
        for(int i=1;i<=n;++i){
        	for(int j=n+1;j<=n*2;++j){
        		C[i][j-n]=B[i][j];
        	}
        }
    }
    int T;
    int main()
    {
    //	freopen("nijuzhen2.in","r",stdin);
    //	freopen("nijuzhen2.out","w",stdout);
    	char t[10];
    	while(scanf("%d",&n)!=EOF){
    		memset(A,0,sizeof(A));
    		for(int i=1;i<=n;++i){
    			for(int j=1;j<=n;++j){
    				scanf("%lf",&A[i][j]);
    			}
    		}
    		if(guass_jordan()){
    			for(int i=1;i<=n;++i){
    				for(int j=1;j<=n;++j){
    					sprintf(t,"%.3f",C[i][j]);
    					if(t[0]=='-' && t[1]=='0' && t[2]=='.' && t[3]=='0' && t[4]=='0' && t[5]=='0'){
    						printf("0.000%c",j==n ? '
    ' : ' ');
    					}
    					else{
    						printf("%.3f%c",C[i][j],j==n ? '
    ' : ' ');
    					}
    				}
    			}
    		}
    		else{
    			puts("NO");
    		}
    	}
        return 0;
    }
  • 相关阅读:
    ajax的基础知识
    前端必备的php的基础知识点
    关于事件的简单汇总
    Django rest-framework(目录)
    Django(目录)
    前端(目录)
    数据库知识(目录)
    数据库基础
    并发编程(目录)
    网络编程
  • 原文地址:https://www.cnblogs.com/autsky-jadek/p/7628137.html
Copyright © 2011-2022 走看看