1. 题目

传送门= ̄ω ̄=

2. 题解

高斯消元模板题

模仿人类消元的做法就好了

至于No Solution的情况。。。就是当前所有方程中某一个未知数的系数都为0,那这个未知数就能有多种值。

顺便安利一下boshi dalao和kb dalao写高斯消元的博客:

boshi:https://www.k-xzy.xyz/?p=1398

kb:http://blog.csdn.net/litble/article/details/72851568

代码:

#include <bits/stdc++.h>
using namespace std;
int n,h[105];
double arr[105][105],ans[105];
int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;h[i]=i,i++)for(int j=0;j<=n;j++)scanf("%lf",&arr[i][j]);
    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
            if(fabs(arr[h[i]][i])<fabs(arr[h[j]][i]))swap(h[i],h[j]);
        if(fabs(arr[h[i]][i])<1e-8)printf("No Solution\n"),exit(0);
        for(int j=n;j>=i;j--)arr[h[i]][j]/=arr[h[i]][i];
        for(int j=i+1;j<n;j++)
            for(int k=n;k>=i;k--)
                arr[h[j]][k]-=arr[h[i]][k]*arr[h[j]][i];
    }
    for(int i=n-1;i>=0;i--)
    {
        ans[i]=arr[h[i]][n];
        for(int j=i+1;j<n;j++)ans[i]-=arr[h[i]][j]*ans[j];
    }
    for(int i=0;i<n;i++)printf("%.2f\n",ans[i]);
    return 0;
}
分类: 文章

XZYQvQ

炒鸡辣鸡的制杖蒟蒻一枚QvQ

发表评论

电子邮件地址不会被公开。 必填项已用*标注

你是机器人吗? =。= *