高斯消元 double类型模板

Posted philo-zhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高斯消元 double类型模板相关的知识,希望对你有一定的参考价值。

#include <bits/stdc++.h>
#define ios ios::sync_with_stdio(false)
#define ll long long
#define mp make_pair
#define ull unsigned long long
using namespace std;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;
const int N = 105;
double ma[N][N];//增广矩阵
double x[N];

int Gauss(int n)

    int max_r;//当前这列绝对值最大的行
    int col = 1;//当前处理的列
    double temp;
    for(int i = 1; i <= n; i++)
        max_r = i;
        for(int j = i+1; j <= n; j++)
            if(fabs(ma[i][j]) > fabs(ma[max_r][j])) max_r = j;
        
        for(int j = 1; j <= n+1; j++) swap(ma[i][j],ma[max_r][j]);
        if(!ma[i][i]) return -1;
        for(int j = 1; j <= n; j++)
            if(j != i)
                double t = ma[j][i]/ma[i][i];
                for(int k = i+1; k <= n+1; k++)
                    ma[j][k] -= ma[i][k]*t;
                
            
        
    
    for(int i = 1; i <= n; i++)
        x[i] = ma[i][n+1]/ma[i][i];
    
    return 0;

int main()
    int n; cin >> n;
    for(int i = 1;i <= n;i++)
        for(int j = 1;j <= n+1;j++)
            cin >> ma[i][j];
        
    
    int op = Gauss(n);
    if(op == -1) printf("No Solution\n");
    else
        for(int i = 1; i <= n; i++)
            printf("%.2lf\n",x[i]);
    
    return 0;

模板题https://www.luogu.org/problem/P3389

以上是关于高斯消元 double类型模板的主要内容,如果未能解决你的问题,请参考以下文章

高斯消元模板(pascal)

模板高斯(约旦)消元

LG3389 模板高斯消元法 高斯消元

高斯消元解线性方程组(浮点高斯消元模板)

题解 P3389 模板高斯消元法

高斯消元整数消元模板