ACM模版

列主元

/**  列主元gauss消去求解a[][] * x[] = b[]*  返回是否有唯一解,若有解在b[]中*/
#define fabs(x) ((x) > 0 ? (x) : (-x))
#define eps 1e-10const int MAXN = 100;int gaussCpivot(int n, double a[][MAXN], double b[])
{int i, j, k, row = 0;double MAXP, temp;for (k = 0; k < n; k++){for (MAXP = 0, i = k; i < n; i++){if (fabs(a[i][k]) > fabs(MAXP)){MAXP = a[row = i][k];}}if (fabs(MAXP) < eps){return 0;}if (row != k){for (j = k; j < n; j++){temp = a[k][j];a[k][j] = a[row][j];a[row][j] = temp;temp = b[k];b[k] = b[row];b[row] = temp;}}for (j = k + 1; j < n; j++){a[k][j] /= MAXP;for (i = k + 1; i < n; i++){a[i][j] -= a[i][k] * a[k][j];}}b[k] /= MAXP;for (i = n - 1; i >= 0; i--){for (j = i + 1; j < n; j++){b[i] -= a[i][j] * b[j];}}}return 1;
}

全主元

/**  全主元gauss消去解a[][] * x[] = b[]*  返回是否有唯一解,若有解在b[]中*/
#define fabs(x) ((x) > 0 ? (x) : (-x))
#define eps 1e-10const int MAXN = 100;int gaussTpivot(int n, double a[][MAXN], double b[])
{int i, j, k, row = 0, col = 0, index[MAXN];double MAXP, temp;for (i = 0; i < n; i++){index[i] = i;}for (k = 0; k < n; k++){for (MAXP = 0, i = k; i < n; i++){for (j = k; j < n; j++){if (fabs(a[i][j] > fabs(MAXP))){MAXP = a[row = i][col = j];}}}if (fabs(MAXP) < eps){return 0;}if (col != k){for (i = 0; i < n; i++){temp = a[i][col];a[i][col] = a[i][k];a[i][k] = temp;}j = index[col];index[col] = index[k];index[k] = j;}if (row != k){for (j = k; j < n; j++){temp = a[k][j];a[k][j] = a[row][j];a[row][j] = temp;}temp = b[k];b[k] = b[row];b[row] = temp;}for (j = k + 1; j < n; j++){a[k][j] /= MAXP;for (i = k + 1; i < n; i++){a[i][j] -= a[i][k] * a[k][j];}}b[k] /= MAXP;for (i = k + 1; i < n; i++){b[i] -= b[k] * a[i][k];}}for (i = n - 1; i >= 0; i--){for (j = i + 1; j < n; j++){b[i] -= a[i][j] * b[j];}}for (k = 0; k < n; k++){a[0][index[k]] = b[k];}for (k = 0; k < n; k++){b[k] = a[0][k];}return 1;
}

高斯消元(自由变元,一类开关问题,位运算操作)

//  高斯消元法求方程组的解const int MAXN = 300;
//  有equ个方程,var个变元。增广矩阵行数为equ,列数为var+1,分别为0到var
int equ, var;
int a[MAXN][MAXN];  //  增广矩阵
int x[MAXN];        //  解集
int free_x[MAXN];   //  用来存储自由变元(多解枚举自由变元可以使用)
int free_num;       //  自由变元的个数//  返回值为-1表示无解,为0是唯一解,否则返回自由变元个数
int Gauss()
{int max_r, col, k;free_num = 0;for (k = 0, col = 0; k < equ && col < var; k++, col++){max_r = k;for (int i = k + 1; i < equ; i++){if (abs(a[i][col]) > abs(a[max_r][col])){max_r = i;}}if (a[max_r][col] == 0){k--;free_x[free_num++] = col;   //  这是自由变元continue;}if (max_r != k){for (int j = col; j < var + 1; j++){swap(a[k][j], a[max_r][j]);}}for (int i = k + 1; i < equ; i++){if (a[i][col] != 0){for (int j = col; j < var + 1; j++){a[i][j] ^= a[k][j];}}}}for (int i = k; i < equ; i++){if (a[i][col] != 0){return -1;  //  无解}}if (k < var){return var - k; //  自由变元个数}//  唯一解,回代for (int i = var - 1; i >= 0; i--){x[i] = a[i][var];for (int j = i + 1; j < var; j++){x[i] ^= (a[i][j] && x[j]);}}return 0;
}

应用例题

POJ 1681 Painter's Problem

线性方程组(高斯消元)相关推荐

  1. 解线性方程组——高斯消元の板子

    ATP记得它在很久以前看过一点点高斯消元的东西然后做过一点点题目..但是当时实在是太zz了所以本来就没有很懂这个东西现在更是忘得差不多了.. 所以现在就当重新学一遍了QwQ 一点口胡的解释 高斯消元. ...

  2. AcWing 883. 高斯消元解线性方程组 (高斯消元)

    题目链接 : 点击查看 题目描述 : 输入一个包含 n 个方程 n 个未知数的线性方程组. 方程组中的系数为实数. 求解这个方程组. 下图为一个包含 m 个方程 n 个未知数的线性方程组示例: 输入输 ...

  3. [SDOI2006]线性方程组 高斯消元

    板子题,注意消元的时候无解判断和常数项的操作 码: #include<iostream> #include<cstdio> #include<cmath> usin ...

  4. AcWing - 高斯消元解线性方程组(高斯消元)

    题目链接:https://www.acwing.com/problem/content/885/ 时/空限制:1s / 64MB 题目描述 输入一个包含n个方程n个未知数的线性方程组. 方程组中的系数 ...

  5. c++用类实现高斯消元法求解线性方程组的解_高斯消元

    高斯消元 众所周知,高斯消元是线性代数中重要的一课.通过矩阵来解线性方程组.高斯消元最大的用途就是用来解多元一次方程组. 前置技能 1.线性方程组 线性方程组是各个方程关于未知量均为一次的方程组(例如 ...

  6. 【Luogu 3389】【模板】高斯消元法(用高斯消元求解线性方程组)

    1.线性方程组 2.高斯消元法 步骤1:通过一系列的加减消元,得到类似 kx=b 的式子,求得最后一个未知量的结果 步骤2:然后逐一回代求解整个 x 向量 以下列方程为例: 第一次加减消元,用第1式子 ...

  7. 高斯消元——解线性方程组+球形空间产生器+开关问题

    传送门:https://www.acwing.com/activity/content/11/ 思路: 把原矩阵变成阶梯型矩阵解题步骤: 1.找到绝对值最大的一行. 2.将该行和最上面未处理好的一行交 ...

  8. 第三十四章 数论——高斯消元解线性方程组

    第三十四章 数论--高斯消元解线性方程组 一.高斯消元 1.线性方程组 2.高斯消元步骤 (1)数学知识铺垫 增广矩阵和阶梯矩阵 初等变换 (2)高斯消元步骤 二.代码模板 1.问题: 2.代码 一. ...

  9. AcWing 883. 高斯消元解线性方程组(高斯消元模板)

    先出裸的模板: #include<bits/stdc++.h>using namespace std; const int N = 110; typedef double db; db a ...

  10. [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题

    [AcWing]883. 高斯消元解线性方程组(C++实现)高斯消元解线性方程组模板题 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算 ...

最新文章

  1. 让汽车软件进入 iPhone 时代!
  2. 问题 1676: 算法2-8~2-11:链表的基本操作
  3. SQL Server 游标的使用示例
  4. 【笔记】spring的注解回顾,springboot-restful项目结构介绍 springboot-freemarker ⼯程配置详解
  5. 主成分分析和因子分析十大不同点
  6. Java Random nextInt()方法与示例
  7. 问题解决:java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date
  8. Chem 3D模型的参数值更改方法
  9. zip安装mysql没有软件,windows10系统安装mysql-8.0.13(zip安装) 的教程详解
  10. mysql havequerycache_如何开启MySQL的中的Query Cache缓存
  11. 关于HTML+CSS3的一些笔记
  12. 盒模型知识点汇总(附实例、图解)
  13. 光洋协议转换网关WTGNet-KOYO
  14. SQL Server 数据库维护计划
  15. html svg图片不显示,html/css svg怎么显示不出来?
  16. 安装Java并配置环境,安装eclipse,在GitHub中上传代码
  17. React 高阶组件HOC详解
  18. 关于720全景视频在移动端播放的兼容问题汇总,截止2017年11月29日
  19. 无盘服务器的优缺点,网众无盘服务器建议
  20. 原创 | 独立开发者:到底做什么样的产品才最赚钱?

热门文章

  1. ART模式下dex2oat出错导致系统无法正常启动
  2. Sqli-Labs Less1-16关详细讲解
  3. 监督学习、无监督学习、强化学习概念
  4. 算法学习笔记12:散列表
  5. 英语写作技巧 ——“李靖“
  6. 贴片电阻分类、阻值、功率、封装、尺寸
  7. node,js的基础认识(一)
  8. (第九章)UI--PS 基础 通道抠图
  9. 用计算机弹出少年的歌谱,最近很火《少年》的歌谱?
  10. 怎么把程序下载到stc15w201s_STC15W201S系列