当前位置:网站首页>Gauss elimination
Gauss elimination
2022-07-07 09:47:00 【moyangxian】
bool dcmp(int x, int y, int k) {
if (fabs(a[x][k]) > fabs(a[y][k]))
return true;
else if (fabs(a[x][k]) < fabs(a[y][k]))
return false;
else {
for (int i = k + 1; i <= n; i++)
if (fabs(a[x][i]) < fabs(a[y][i])) return true;
return false;
}
}
//0 It means that there is an infinite solution ,1 It means that there is a unique solution
// Test Luogu P3389
int Gauss() {
for (int r = 1, c = 1; c <= n; c++, r++) {
int t = r;
for (int i = r + 1; i <= n; i++)
if (fabs(a[i][c]) > fabs(a[t][c]))
t = i;
if (sgn(a[t][c]) == 0) return 0;
if (t != r)for (int i = c; i <= n + 1; i++)swap(a[t][i], a[r][i]);
for (int i = n + 1; i >= c; i--)a[r][i] /= a[r][c];
for (int i = 1; i <= n; i++)
if (i != r) {
for (int j = c + 1; j <= n + 1; j++)
a[i][j] -= a[r][j] * a[i][c];
a[i][c] = 0;
}
}
return 1;
}
//-1 There is no solution ,0 It means that there is an infinite solution ,1 It means that there is a unique solution
// Test Luogu P2455
int Gauss() {
for (int r = 1, c = 1; c <= n; c++, r++) {
int t = r;
for (int i = r + 1; i <= n; i++)
if (dcmp(i, t, c)) t = i;
if (t != r) for (int i = c; i <= n + 1; i++) swap(a[t][i], a[r][i]);
if (sgn(a[r][c]) == 0) continue;
for (int i = n + 1; i >= c; i--) a[r][i] /= a[r][c];
a[r][c] = 1;
for (int i = 1; i <= n; i++) {
if (i == r) continue;
for (int j = c + 1; j <= n + 1; j++)
a[i][j] -= a[r][j] * a[i][c];
a[i][c] = 0;
}
}
bool f1 = 0, f2 = 0;
for (int i = 1; i <= n; i++) {
if (sgn(a[i][i]) == 0 && sgn(a[i][n + 1]) != 0) f1 = 1;
if (sgn(a[i][i]) == 0 && sgn(a[i][n + 1]) == 0) f2 = 1;
}
if (f1) return -1; // unsolvable
if (f2) return 0; // Infinite solutions
return 1; // Unique solution
}
边栏推荐
- 剑指 Offer II 107. 矩阵中的距离
- 如何使用clipboard.js库实现复制剪切功能
- Over 100000 words_ Ultra detailed SSM integration practice_ Manually implement permission management
- Gym - 102219J Kitchen Plates(暴力或拓扑序列)
- How to become a senior digital IC Design Engineer (5-3) theory: ULP low power design technology (Part 2)
- HCIP 第一天 笔记整理
- 面试被问到了解哪些开发模型?看这一篇就够了
- Use 3 in data modeling σ Eliminate outliers for data cleaning
- Niuke - Huawei question bank (61~70)
- Information Security Experiment 4: implementation of IP packet monitoring program
猜你喜欢
战略合作|SubQuery 成为章鱼网络浏览器的秘密武器
PLC信号处理系列之开关量信号防抖FB
4、 Fundamentals of machine learning
In fact, it's very simple. It teaches you to easily realize the cool data visualization big screen
其实特简单,教你轻松实现酷炫的数据可视化大屏
小程序实现页面多级来回切换支持滑动和点击操作
Loxodonframework quick start
Elaborate on MySQL mvcc multi version control
Information Security Experiment 3: the use of PGP email encryption software
[4G/5G/6G专题基础-147]: 6G总体愿景与潜在关键技术白皮书解读-2-6G发展的宏观驱动力
随机推荐
HCIP 第一天 笔记整理
Unity shader (pass user data to shader)
Selenium+bs4 parsing +mysql capturing BiliBili Tarot data
Can flycdc use SqlClient to specify mysqlbinlog ID to execute tasks
Information Security Experiment 4: implementation of IP packet monitoring program
面试被问到了解哪些开发模型?看这一篇就够了
沙龙预告|GameFi 领域的瓶颈和解决方案
Octopus future star won a reward of 250000 US dollars | Octopus accelerator 2022 summer entrepreneurship camp came to a successful conclusion
小程序滑动、点击切换简洁UI
JS inheritance prototype
CDZSC_2022寒假个人训练赛21级(2)
La différence entre viewpager 2 et viewpager et la mise en œuvre de la rotation viewpager 2
2016 CCPC Hangzhou Onsite
How does mongodb realize the creation and deletion of databases, the creation of deletion tables, and the addition, deletion, modification and query of data
The industrial chain of consumer Internet is actually very short. It only undertakes the role of docking and matchmaking between upstream and downstream platforms
Thinkphp3.2 information disclosure
PLC信号处理系列之开关量信号防抖FB
Information Security Experiment 3: the use of PGP email encryption software
MySQL can connect locally through localhost or 127, but cannot connect through intranet IP (for example, Navicat connection reports an error of 1045 access denied for use...)
创建一个长度为6的int型数组,要求数组元素的值都在1-30之间,且是随机赋值。同时,要求元素的值各不相同。