• P3389 【模板】高斯消元法


    题目地址


    注意点:

    • 模拟.

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    using namespace std;
    const double eps=1e-7;
    const int MAXN=2e2;
    double map[MAXN][MAXN];
    double ans[MAXN];
    int main(){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n+1;j++)
                scanf("%lf",&map[i][j]);//读入方程组 
        for(int i=1;i<=n;i++){//枚举每一个元 
            int r=i;//选择哪一个方程 
            for(int j=i+1;j<=n;j++)//i之前的都已经排好了 
                if(fabs(map[r][i])<fabs(map[j][i]))
                    r=j; //找系数绝对值最大的方程 
            if(fabs(map[r][i])<eps){//存在自由元 
                printf("No Solution");//无解 
                return 0;
            }
            if(i!=r)swap(map[i],map[r]);//优先利用系数绝对值更大的方程 
            double div=map[i][i];//系数除数 
            for(int j=i;j<=n+1;j++)//枚举下面的每个方程 
                map[i][j]/=div;
            for(int j=i+1;j<=n;j++){
                div=map[j][i];
                for(int k=i;k<=n+1;k++)
                    map[j][k]-=map[i][k]*div;
            }
        }
        ans[n]=map[n][n+1];
        for(int i=n-1;i>=1;i--){//带回到原方程组 
            ans[i]=map[i][n+1];//x_i的具体值 
            for(int j=i+1;j<=n;j++)
                ans[i]-=(map[i][j]*ans[j]);
        }
        for(int i=1;i<=n;i++)
            printf("%.2lf
    ",ans[i]);
        return 0;
    }
    

      

  • 相关阅读:
    windows 命令修改IP
    iptables_forward
    python之pickle模块
    python之os.path模块
    python之random模块
    python基础之常用模块
    python基础之测试题
    python 集合(set)基础
    python编码与解码
    python3 字符串基础
  • 原文地址:https://www.cnblogs.com/zbsy-wwx/p/11734764.html
Copyright © 2020-2023  润新知