zoukankan      html  css  js  c++  java
  • 洛谷P3389 【模板】高斯消元法

    P3389 【模板】高斯消元法

    题目背景

    Gauss消元

    题目描述

    给定一个线性方程组,对其求解

    输入输出格式

    输入格式:

    第一行,一个正整数 nn

    第二至 n+1n+1行,每行 n+1n+1 个整数,为a_1, a_2 cdots a_na1,a2an 和 bb,代表一组方程。

    输出格式:

    共n行,每行一个数,第 ii行为 x_ixi (保留2位小数)

    如果不存在唯一解,在第一行输出"No Solution".

    输入输出样例

    输入样例#1: 复制
    3
    1 3 4 5
    1 4 7 3
    9 3 2 2
    输出样例#1: 复制
    -0.97
    5.18
    -2.39

    说明

    1 leq n leq 100, left | a_i ight| leq {10}^4 , left |b ight| leq {10}^41n100,ai104,b104

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #define maxn 110
    #define eps 0.000000001
    using namespace std;
    int n;
    double a[maxn][maxn];
    void guass(){
        for(int i=1;i<=n;i++){//枚举每个未知量 
            int p=i;
            for(int j=i+1;j<=n;j++)
                if(fabs(a[j][i])>fabs(a[p][i]))p=j;//查找哪一个式子中的该未知量系数最大 
            for(int j=1;j<=n+1;j++)swap(a[i][j],a[p][j]);//让它成为第i个式子 
            double tmp=a[i][i];//系数化为一用 
            if(fabs(tmp)<eps)continue;//因为后面涉及到除法操作,不允许0的存在 
            for(int j=1;j<=n+1;j++)a[i][j]/=tmp;
            for(int j=1;j<=n;j++){
                if(j==i)continue;
                double tmp=a[j][i];
                for(int k=1;k<=n+1;k++){
                    a[j][k]-=tmp*a[i][k];
                }
            }
        }
    }
    int main(){
        freopen("Cola.txt","r",stdin);
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n+1;j++)
                scanf("%lf",&a[i][j]);
        guass();
        bool wujie=0,duojie=0;
        for(int i=1;i<=n;i++){//枚举每个等式 
            int cnt=0;
            for(int j=1;j<=n+1;j++){
                if(fabs(a[i][j])<eps)cnt++;
                else break;
            }
            if(cnt==n)wujie=1;
            if(cnt==n+1)duojie=1;
        }
        if(wujie||duojie){puts("No Solution");return 0;}
        for(int i=1;i<=n;i++){
            printf("%.2lf
    ",a[i][n+1]);
        }
    }

     

  • 相关阅读:
    笔记(用Python做些事情)--变量(数字、字符串)
    笔记(用Python做些事情)--变量(日期和时间)
    服务设计-ETL-核心框架
    zookeeper-服务-应用
    HBASE-表设计-优化
    HBASE-读取数据-优化
    HBASE-数据写入-优化
    Zookeeper-客户端-zkclient-curator
    KAFKA-使用问题
    HBASE-Spark操作hbase数据-思考
  • 原文地址:https://www.cnblogs.com/thmyl/p/8084605.html
Copyright © 2011-2022 走看看