【题解】P3389 【模板】高斯消元法

高斯消元的方法不再自己写了,百度百科和这篇文章写的已经很清楚了
高斯-若尔当消元法-百度百科
数论小白都能看懂的线性方程组及其解法

直接上代码

#include<bits/stdc++.h>
using namespace std;
double a[206][206];
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n+1;j++)scanf("%lf",&a[i][j]);
    for(int k=1;k<=n;k++)
    {
        if(a[k][k]!=1&&a[k][k]!=0)//这地方要特判被除数是否等于0,不然会WA掉的
        {
            double t=a[k][k];
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n+1;j++)a[i][j]/=t;
        }
        for(int i=1;i<=n;i++)
        {
            double temp=a[i][k];
            for(int j=1;j<=n+1;j++)
            {
                if(i!=k&&a[k][k]!=0)
                {
                    a[i][j]-=(temp/a[k][k])*a[k][j];
                }
            }
        }
       /* for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n+1;j++)
            {
                printf("%.2f ",a[i][j]);
            }
            printf("\n");
        }
        */
    }
    for(int i=1;i<=n;i++)
    {
        if(!a[i][i]){printf("No Solution");return 0;}
    }
    for(int i=1;i<=n;i++)
    {
        printf("%.2f\n",a[i][n+1]/a[i][i]);
    }
    return 0;
}

不过百度百科说朴素高斯消元要比高斯-约旦算法效率高
咱也没试过,也不知道
这玩意数据范围还不到100其实效率也差不是很多吧

posted @ 2021-02-19 01:19  melodit  阅读(60)  评论(0)    收藏  举报