当前位置:网站首页>高斯消元 AcWing 883. 高斯消元解线性方程组
高斯消元 AcWing 883. 高斯消元解线性方程组
2022-07-03 08:41:00 【T_Y_F666】
高斯消元 AcWing 883. 高斯消元解线性方程组
原题链接
算法标签
线性代数 高斯消元
思路
代码
#include<bits/stdc++.h>
#define int long long
#define abs fabs
#define rep(i, a, b) for(int i=a;i<b;++i)
#define Rep(i, a, b) for(int i=a;i>=b;--i)
using namespace std;
const int N = 105;
double a[N][N], eps = 1e-8;
int n;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
void put(int x) {
if(x<0) putchar('-'),x=-x;
if(x>=10) put(x/10);
putchar(x%10^48);
}
int gu(){// 高斯消元,答案存于a[i][n]中,0 <= i < n
// c代表列 r代表行
int c, r;
// 按列枚举
for(c=0, r=0; c<n; ++c){
int t=r;
rep(i, r, n){
if(abs(a[i][c])>abs(a[t][c])){// 找绝对值最大的行
t=i;
}
}
if(abs(a[t][c])<eps){
continue;
}
rep(i, c, n+1){// 将绝对值最大的行换到最顶端
swap(a[t][i], a[r][i]);
}
Rep(i, n, c){// 将当前行的首位变成1
a[r][i]/=a[r][c];
}
rep(i, r+1, n){// 用当前行将下面所有的列消成0
if(abs(a[i][c])>eps){
Rep(j, n, c){
a[i][j]-=a[r][j]*a[i][c];
}
}
}
++r;
}
if(r<n){
rep(i, r, n){
if(abs(a[i][n])>eps){
return 2;// 无解
}
}
return 1;// 有无穷多组解
}
Rep(i, n-1, 0){
rep(j, i+1, n){
a[i][n]-=a[i][j]*a[j][n];
}
}
return 0;// 有唯一解
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
n=read();
rep(i, 0, n){
rep(j, 0, n+1){
scanf("%lf", &a[i][j]);
}
}
int t=gu();
if(t==2){
puts("No solution");
}else if(t==1){
puts("Infinite group solutions");
}else{
rep(i, 0, n){
if(abs(a[i][n])<eps){// 去掉输出 -0.00 的情况
a[i][n]=0;
}
printf("%.2lf\n", a[i][n]);
}
}
return 0;
}
原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
边栏推荐
- Unity notes 1
- Try to reprint an article about CSDN reprint
- VIM learning notes from introduction to silk skating
- Campus lost and found platform based on SSM, source code, database script, project import and operation video tutorial, Thesis Writing Tutorial
- Allocation exception Servlet
- [rust notes] 08 enumeration and mode
- createjs easeljs
- 二进制转十进制,十进制转二进制
- Find the intersection of line segments
- Unity multi open script
猜你喜欢

Advanced OSG collision detection

Gif remove blank frame frame number adjustment

Graphics_ Learnopongl learning notes

Mortgage Calculator

Chocolate installation

Binary to decimal, decimal to binary

Deep parsing (picture and text) JVM garbage collector (II)

SQL statement error of common bug caused by Excel cell content that is not paid attention to for a long time
![[concurrent programming] working mechanism and type of thread pool](/img/51/d21428a7c95c0a5177e8198742e78c.jpg)
[concurrent programming] working mechanism and type of thread pool

Message queue for interprocess communication
随机推荐
C language student management system based on linked list, super detailed
Creation of osgearth earth files to the earth ------ osgearth rendering engine series (1)
Notes on understanding applets 2022/7/3
I made mistakes that junior programmers all over the world would make, and I also made mistakes that I shouldn't have made
Deeply understand the underlying data structure of MySQL index
[rust notes] 07 structure
On the difference and connection between find and select in TP5 framework
[concurrent programming] concurrent tool class of thread
Gif remove blank frame frame number adjustment
Introduction to Base64 coding
MySQL three logs
【Rust笔记】02-所有权
注解简化配置与启动时加载
Gradle's method of dynamically modifying APK package name
MySQL 8
22-06-27 Xian redis (01) commands for installing five common data types: redis and redis
JS non Boolean operation - learning notes
单调栈-503. 下一个更大元素 II
【Rust 笔记】07-结构体
22-06-28 西安 redis(02) 持久化机制、入门使用、事务控制、主从复制机制