1. 题目

传送门= ̄ω ̄=

2. 题解

高斯消元模板题

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

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

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

boshi:https://www.mina.moe/?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

0 条评论

发表回复

Avatar placeholder

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