首页 > 其他分享 >高斯消斯

高斯消斯

时间:2023-04-17 18:59:13浏览次数:35  
标签:return fabs int eps ++ -- 高斯消

 

 

#include<bits/stdc++.h>
using namespace std;
const int N=110;
double a[N][N];
const double eps = 1e-8;
int n;
int guess(){
    int 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;

        if (fabs(a[t][c]) < eps) continue;

        for (int i = c; i <= n; i ++ ) swap(a[t][i], a[r][i]);  // 将绝对值最大的行换到最顶端
        for (int i = n; i >= c; i -- ) a[r][i] /= a[r][c];  // 将当前行的首位变成1
        for (int i = r + 1; i < n; i ++ )  // 用当前行将下面所有的列消成0
            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){
        for(int i=r;i<n;i++){
            if(fabs(a[i][n])>eps){
                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 = guess();
    if (t == 2) puts("No solution");
    else if (t == 1) puts("Infinite group solutions");
    else
    {
        for (int i = 0; i < n; i ++ )
        {
            if (fabs(a[i][n]) < eps) a[i][n] = 0;  // 去掉输出 -0.00 的情况
            printf("%.2lf\n", a[i][n]);
        }
    }

    return 0;
}

 

 

标签:return,fabs,int,eps,++,--,高斯消
From: https://www.cnblogs.com/aixin52129211/p/17326793.html

相关文章

  • 【模板】高斯消元
    CODE#include<bits/stdc++.h>usingnamespacestd;constdoubleeps=1e-10;doubleuu,a[52][52],b[52];intn,l[52];boolpd;inlinevoidzzd(int&maxx,inti,intcnt){ for(intj=cnt+1;j<=n;++j){//找系数最大值 if(fabs(a[j][i])>fabs(a[maxx][i])) ......
  • SGU 200 Cracking RSA (高斯消元+大数高精度)
    题目地址:SGU200这题居然还考大数高精度。。无语。。令有该因子偶数个为0,奇数个为1,这样就满足异或运算了,即奇+奇=偶,偶+偶=偶,奇+偶=奇。然后建立方程高斯消元求变元个数free_num,那么子集的个数就是2^free_num-1。减1是去掉0的情况。注意要用大数运算代码如下:#include<iostream>#in......
  • POJ 1753 Flip Game (高斯消元)
    题目地址:POJ1753第三次做这道题了。第一次是刚学搜索的时候做的,第二次是刚学状态压缩枚举的时候做的,这次是刚学高斯消元、、每次都做得很艰辛。。目测这题应该没了别的方法了吧。。。。。。这题除了高斯消元外还需要枚举变元,方法是状态压缩枚举,然后返回去迭代解方程。代码如下:#inc......
  • POJ 1830 开关问题 (高斯消元)
    题目地址:POJ1830高斯消元第一发。一个地方逻辑判断出现了失误,调了一下午啊。。。通过高斯消元来找矩阵的秩,然后2^(自由元的数量)就是答案。因为对于每个自由元,都有0和1两种状态可选。代码如下:#include<iostream>#include<string.h>#include<math.h>#include<queue>#includ......
  • 高斯消元
    \(\color{black}高斯消元\)题意输入一个包含\(n\)个方程\(n\)个未知数的线性方程组。方程组中的系数为实数。求解这个方程组。下图为一个包含\(m\)个方程\(n\)个未知数的线性方程组示例:\[\left\{\begin{matrix}a_{1,1}\cdotx_1+a_{1,2}\cdotx_2+\dots+a_{......
  • 【模板】高斯消元
    #include<bits/stdc++.h>usingnamespacestd;constdoubleeps=1e-10;doubleuu,a[52][52],b[52];intn,l[52];boolpd;inlinevoidzzd(int&maxx,inti,intcnt){ for(intj=cnt+1;j<=n;++j){//找系数最大值 if(fabs(a[j][i])>fabs(a[maxx][i])) max......
  • 【洛谷】P4457 [BJOI2018]治疗之雨(期望+高斯消元)
    原题链接题意初始时玩家有\(p\)滴血,满血\(n\)滴,每个回合会进行如下操作:若当前还没有满血,则以\(\frac{1}{m+1}\)的概率增加一滴血;\(k\)次判定,每次以\(\frac......
  • 【YBT2023寒假Day3 A】千与千寻(期望DP)(高斯消元)
    千与千寻题目链接:YBT2023寒假Day3A题目大意一个n*m的平面,你要从(0,0)走到(x,y),你等概率的向上或向右走,然后当你走到(n-1,i)再往右走,就是(0,i),走到(i,m-1)再......
  • 高斯消元法
    高斯消元法心情不好,来写博客...思想一种通过消元求解线性方程组的方法,时间复杂度为\(n^3\)和普通的消元法无二,选定一个自变量为主元,将一行的主元系数化为一,再通过乘......
  • 高斯消元
    简述高斯消元法(Gauss-Jordanelimination)是求解线性方程组的经典算法,它在当代数学中有着重要的地位和价值,是线性代数课程教学的重要组成部分。高斯消元法除了用于线性方......