#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n, x;
double a[105][105];
bool gauss(){
for(int i=1; i<=n; i++){
int maxi=i;
for(int j=i+1; j<=n; j++)
if(fabs(a[j][i])>fabs(a[maxi][i]))
maxi = j;
if(fabs(a[maxi][i])<1e-7) return false;
double now=a[maxi][i];
swap(a[i], a[maxi]);
for(int j=i; j<=n+1; j++)
a[i][j] /= now;
for(int j=1; j<=n; j++)
if(j!=i){
now = a[j][i];
for(int k=i; k<=n+1; k++)
a[j][k] -= a[i][k] * now;
}//一步到位,上下全消
}
return true;
}
int main(){
cin>>n;
for(int i=1; i<=n; i++)
for(int j=1; j<=n+1; j++){
scanf("%d", &x);
a[i][j] = x;
}
if(!gauss()) printf("No Solution\n");
else
for(int i=1; i<=n; i++)
printf("%.2lf\n", a[i][n+1]);
return 0;
}
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n, x;
double a[105][105];
bool gauss(){
for(int i=1; i<=n; i++){
int maxi=i;
for(int j=i+1; j<=n; j++)
if(fabs(a[j][i])>fabs(a[maxi][i]))
maxi = j;
if(fabs(a[maxi][i])<1e-7) return false;
double now=a[maxi][i];
swap(a[i], a[maxi]);
for(int j=i; j<=n+1; j++)
a[i][j] /= now;
for(int j=i+1; j<=n; j++){//对下面几行消元构成上三角
now = a[j][i];
for(int k=i; k<=n+1; k++)
a[j][k] -= a[i][k] * now;
}
}
for(int i=n; i>=1; i--){//回代
for(int j=1; j<=i-1; j++){
a[j][n+1] -= a[j][i] * a[i][n+1];
a[j][i] = 0;
}
}
return true;
}
int main(){
cin>>n;
for(int i=1; i<=n; i++)
for(int j=1; j<=n+1; j++){
scanf("%d", &x);
a[i][j] = x;
}
if(!gauss()) printf("No Solution\n");
else
for(int i=1; i<=n; i++)
printf("%.2lf\n", a[i][n+1]);
return 0;
}

luogu3389 【模板】高斯消元法的更多相关文章

  1. 高斯消元法(Gauss Elimination)【超详解&模板】

    高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵.高斯消元法的原理是:若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组. ...

  2. 洛谷P3389 【模板】高斯消元法

    P3389 [模板]高斯消元法 题目背景 Gauss消元 题目描述 给定一个线性方程组,对其求解 输入输出格式 输入格式: 第一行,一个正整数 n 第二至 n+1行,每行 n+1 个整数,为a1​,a ...

  3. 题解 P3389 【【模板】高斯消元法】

    题解 P3389 [[模板]高斯消元法] 看到大家都没有重载运算符,那我就重载一下运算符给大家娱乐一下 我使用的是高斯-约旦消元法,这种方法是精度最高的(相对地) 一句话解释高斯约旦消元法: 通过加减 ...

  4. 「LuoguP3389」【模板】高斯消元法

    题目背景 Gauss消元 题目描述 给定一个线性方程组,对其求解 输入输出格式 输入格式: 第一行,一个正整数 nn 第二至 n+1n+1行,每行 n+1n+1 个整数,为a_1, a_2 \cdot ...

  5. 洛谷——P3389 【模板】高斯消元法

    P3389 [模板]高斯消元法 以下内容都可省略,直接转大佬博客%%% 高斯消元总结 只会背板子的蒟蒻,高斯消元是什么,不知道诶,看到大佬们都会了这个水题,蒟蒻只好也来切一切 高斯消元最大用途就是解多 ...

  6. (模板)poj2947(高斯消元法解同余方程组)

    题目链接:https://vjudge.net/problem/POJ-2947 题意:转换题意后就是已知m个同余方程,求n个变量. 思路: 值得学习的是这个模板里消元用到lcm的那一块.注意题目输出 ...

  7. (模板)poj1681 高斯消元法求异或方程组(无解、唯一解、多解)

    题目链接:https://vjudge.net/problem/POJ-1681 题意:类似于poj1222,有n×n的01矩阵,翻转一个点会翻转其上下左右包括自己的点,求最少翻转多少点能使得矩阵全0 ...

  8. [Luogu 3389]【模板】高斯消元法

    Description 给定一个线性方程组,对其求解 Input 第一行,一个正整数 n 第二至 n+1 行,每行 n+1 个整数,为a1,a2⋯an和 b,代表一组方程.1​​,a​2​​⋯a​n​ ...

  9. P3389 【模板】高斯消元法

    高斯消元求解n元一次线性方程组的板子题: 先举个栗子: • 2x + y -   z =  8-----------① •-3x - y + 2z = -11---------② •-2x + y + ...

随机推荐

  1. go语言简单的soap调用方法

    package main import ( "bytes" "encoding/xml" "fmt" "io" &quo ...

  2. <Android HAL 之路> HAL 简介

    HAL层概述 名称: HAL, Hardware Abstracting Layer,中文名字:硬件抽象层. 作用:对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节.向上衔接Andro ...

  3. 使用ABAP批量下载有道云笔记中的图片

    Jerry喜欢用有道云笔记这款软件做自己的知识管理和知识体系的构建. 当您看到一篇好的有道云笔记分享时,可能会想将其精美的图片下载到本地.作为程序猿,我们不会去手动一张张下载.写个程序帮我们自动下载吧 ...

  4. Android(java)学习笔记107:Relativelayout相对布局

    1. Relativelayout相对布局案例: 我们看看案例代码,自己心领神会: <?xml version="1.0" encoding="utf-8" ...

  5. Linux增加sudo用户

    1.  root用户编辑文件/etc/sudoers vi /etc/sudoers 2.  按yy复制行root   ALL=(ALL)      ALL 按p粘贴,修改 “root” 为添加的用户 ...

  6. 第1节 flume:12、flume的load_balance实现机制

    1.5.flume的负载均衡load balancer 负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法.Load balancing Sink Processor 能够实现 l ...

  7. Google 出品的 Java 编码规范,强烈推荐,权威又科学!

    原文:google.github.io/styleguide/javaguide.html 译者:Hawstein 来源:hawstein.com/2014/01/20/google-java-sty ...

  8. 虚拟机设置NAT

    需要开启虚拟机网络相关服务, 安装虚拟网卡, 还有必须安装 VMware Tools VMware虚拟机下实现NAT方式上网1. 把你的虚拟网卡VMnet8设置为自动获得IP.自动获得DNS服务器,启 ...

  9. PhoneGap+JQuery Mobile移动应用开发学习笔记

    最近一直在学习使用PhoneGap+JQuery Mobile的开发框架开发Android应用,抛开这个框架的运行效率不说,暂且将使用中遇到的问题进行一下整理. 1.JS文件引用顺序 也许在进行web ...

  10. Chunky Monkey-freecodecamp算法题目

    Chunky Monkey(猴子吃香蕉, 分割数组) 要求 把一个数组arr按照指定的数组大小size分割成若干个数组块. 思路 利用size值和while语句确定切割数组的次数(定义temp将siz ...