当前位置: 首页 > news >正文

题解:洛谷 P2455 [SDOI2006] 线性方程组

【题目来源】

洛谷:P2455 [SDOI2006] 线性方程组 - 洛谷 (luogu.com.cn)

【题目描述】

已知 \(n\) 元线性一次方程组。

\[\begin{cases} a_{1, 1} x_1 + a_{1, 2} x_2 + \cdots + a_{1, n} x_n = b_1 \\ a_{2, 1} x_1 + a_{2, 2} x_2 + \cdots + a_{2, n} x_n = b_2 \\ \cdots \\ a_{n,1} x_1 + a_{n, 2} x_2 + \cdots + a_{n, n} x_n = b_n \end{cases} \]

请根据输入的数据,编程输出方程组的解的情况。

【输入】

第一行输入未知数的个数 \(n\)
接下来 \(n\) 行,每行 \(n + 1\) 个整数,表示每一个方程的系数及方程右边的值。

【输出】

如果有唯一解,则输出解。你的结果被认为正确,当且仅当对于每一个 \(x_i\) 而言结果值与标准答案值的绝对误差或者相对误差不超过 \(0.01\)

如果方程组无解输出 \(-1\)
如果有无穷多实数解,输出 \(0\)

【输入样例】

3
2 -1 1 1
4 1 -1 5
1 1 1 0

【输出样例】

x1=1.00
x2=0.00
x3=-1.00

【算法标签】

《洛谷 P2455 线性方程组》 #数学# #线性代数# #高斯消元# #各省省选# #2006# #山东# #Special Judge#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 105;  // 最大矩阵大小
const double eps = 1e-6;  // 浮点数精度阈值
int n;  // 方程数量(即矩阵阶数)
double a[N][N];  // 增广矩阵// 高斯消元法求解线性方程组
int gauss()
{int c, r;  // c: 当前列,r: 当前行// 主循环:对每一列进行消元for (c = 0, r = 0; c < n; c++){int t = r;  // 寻找当前列绝对值最大的行for (int i = r; i < n; i++){if (fabs(a[i][c]) > fabs(a[t][c])){t = i;}}// 如果当前列主元绝对值小于eps,说明该列全为0,跳过if (fabs(a[t][c]) < eps){continue;}// 将主元所在行交换到第r行for (int i = c; i <= n; i++){swap(a[t][i], a[r][i]);}// 将主元归一化为1for (int i = n; i >= c; i--){a[r][i] /= a[r][c];}// 用第r行消去下面所有行的第c列for (int i = r + 1; i < n; i++){if (fabs(a[i][c]) > eps){for (int j = n; j >= c; j--){a[i][j] -= a[r][j] * a[i][c];}}}r++;  // 行指针下移}// 判断解的情况if (r < n)  // 系数矩阵秩小于n{for (int i = r; i < n; i++){if (fabs(a[i][n]) > eps)  // 存在0=非零的情况,无解{return 2;}}return 1;  // 有无穷多解}// 回代求解for (int i = n - 1; i >= 0; i--){for (int j = i + 1; j < n; j++){a[i][n] -= a[i][j] * a[j][n];}}return 0;  // 有唯一解
}int main()
{cin >> n;  // 读入方程数量// 读入增广矩阵for (int i = 0; i < n; i++){for (int j = 0; j < n + 1; j++){cin >> a[i][j];}}int t = gauss();  // 执行高斯消元if (t == 0)  // 有唯一解{for (int i = 0; i < n; i++){printf("x%d=%.2lf\n", i + 1, a[i][n]);}}else if (t == 1)  // 有无穷多解{cout << "0" << endl;}else  // 无解{cout << "-1" << endl;}return 0;
}

【运行结果】

3
2 -1 1 1
4 1 -1 5
1 1 1 0
x1=1.00
x2=0.00
x3=-1.00
http://www.jsqmd.com/news/397215/

相关文章:

  • 北京丰宝斋上门回收全品类老物件,名家字画、古木家具等,现金结算无忧 - 品牌排行榜单
  • 数据驱动的提示创新:提示工程架构师的5个实践方法
  • Python基于Vue的体育运动网站 django flask pycharm
  • 2026中专计算机专业学数据分析的技术价值分析
  • Python基于Vue的在线图书商城系统的设计与实现 django flask pycharm
  • 大数据领域数据挖掘的核心技术与应用案例
  • 开发日志3
  • 彼得林奇的“质量优先“在可持续发展投资中的应用
  • AI医疗影像分析中的差分隐私部署指南
  • 北京红宝书+明清古籍回收,丰宝斋上门鉴定,现金结算,老字号放心选 - 品牌排行榜单
  • AI应用架构师指南:智能采购决策系统的模型部署
  • ClickHouse 与 Snowflake 对比:云上大数据处理方案
  • Python get pid via os,get memory via psutil
  • 大数据OLAP中的列式存储优势分析
  • Python基于Vue的外卖商家管理系统的设计与实现 django flask pycharm
  • 揭秘大数据领域数据降维的高效技巧
  • 极简代办桌面助手 软件(开源pyqt6)
  • PEMFC燃料电池comsol模型,考虑液态水、膜态水、反应热,附带燃料电池仿真教材电子版
  • 量子AI系统的上线流程:架构师的发布指南(附 checklist)
  • 2026年大专运营专业学习数据分析的价值与路径
  • 题解:洛谷 P1654 OSU!
  • 优雅简历(html开源)
  • 什么是 Java 泛型的上下界限定符?
  • Java 泛型擦除是什么?
  • 表情包制作(ai banana使用教程)
  • 题解:洛谷 P1962 斐波那契数列
  • Solution - P2175 小Z的游戏分队
  • 北京丰宝斋上门回收,名家字画+古木家具,一站式变现更省心 - 品牌排行榜单
  • 题解:洛谷 P4071 [SDOI2016] 排列计数
  • 北京明清古籍回收,丰宝斋老字号上门,现金结算,价公道有保障 - 品牌排行榜单