当前位置:网站首页>高斯消元 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;
}
原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
边栏推荐
- [concurrent programming] concurrent tool class of thread
- Unity notes 1
- Cloudcompare learning (1) - cloudcompare compilation and common plug-in implementation
- Thymeleaf 404 reports an error: there was unexpected error (type=not found, status=404)
- UE4 source code reading_ Bone model and animation system_ Animation process
- [redis] redis persistent RDB vs AOF (source code)
- Notes on understanding applets 2022/7/3
- Analysis of Alibaba canal principle
- Sending and receiving of request parameters
- [rust notes] 13 iterator (Part 1)
猜你喜欢
[MySQL] MySQL Performance Optimization Practice: introduction of database lock and index search principle
DOM 渲染系统(render mount patch)响应式系统
[concurrent programming] working mechanism and type of thread pool
Vscode, idea, VIM development tool shortcut keys
二进制转十进制,十进制转二进制
100 GIS practical application cases (78) - Multi compliance database design and data warehousing
JS ternary operator - learning notes (with cases)
[concurrent programming] concurrent tool class of thread
Deep parsing JVM memory model
Advanced OSG collision detection
随机推荐
Final review of Database Principles
How to place the parameters of the controller in the view after encountering the input textarea tag in the TP framework
Concurrent programming (V) detailed explanation of atomic and unsafe magic classes
第一个Servlet
Annotations simplify configuration and loading at startup
MySQL three logs
VIM learning notes from introduction to silk skating
[redis] redis persistent RDB vs AOF (source code)
PHP mnemonic code full text 400 words to extract the first letter of each Chinese character
Alibaba canaladmin deployment and canal cluster Ha Construction
Installation of PHP FPM software +openresty cache construction
The method for win10 system to enter the control panel is as follows:
[rust note] 10 operator overloading
UE4 source code reading_ Bone model and animation system_ Animation process
如何应对数仓资源不足导致的核心任务延迟
Unity Editor Extension - Outline
[concurrent programming] explicit lock and AQS
Phpstudy 80 port occupied W10 system
Introduction to Base64 coding
二进制转十进制,十进制转二进制