#50求助大佬
查看原帖
#50求助大佬
392816
小小蒲公英楼主2023/6/30 18:23

因为是比较早前写的,码风比较乱,大佬勿喷

不知道哪里判有问题

#2#4#5#8#9#12

#include<bits/stdc++.h>
using namespace std;
double b[102][101];
double answer[101];
const double eps = 1e-6;
int main()
{
    int a;
    cin>>a;
    for(int i=1;i<=a;i++)
    {
        for(int j=1;j<=a+1;j++)
        {
            cin>>b[i][j];
        }
    }
    for(int i=1;i<a;i++)
    {
        for(int j=i+1;j<=a;j++)
        {
            if(-eps<=b[i][i] && b[i][i]<=eps){
                -eps<=b[j][i] && b[j][i]<=eps? cout<<"0" : cout<<"-1";
                return 0;
            }
            double bei=-b[j][i]/b[i][i];
            for(int k=1;k<=a+1;k++)
            {
                b[j][k]=b[i][k]*bei+b[j][k];
            }
        }
    }
//    for(int i=1;i<=a;i++)
//    {
//        for(int j=1;j<=a+1;j++)
//        {
//            cout<<fixed<<setprecision(2)<<b[i][j]<<' ';
//        }
//        cout<<"\n";
//    }
    int j;
    for(int i=a;i>=1;i--){
        for(j=a;j>=i+1;j--){
            b[i][a+1]-=answer[j]*b[i][j];
          //  if(b[i][j] == 0) break;
        }
        if(-eps<=b[i][i] && b[i][i]<=eps){
            -eps<=b[i][a+1] && b[i][a+1] <=eps ?cout<<"0":cout<<"-1";
            return 0;
        }
        answer[i] = b[i][a+1]/b[i][i];
    }
    for(int i=1;i<=a;i++){
        cout<<"x"<<i<<"="<<fixed<<setprecision(2)<<answer[i]<<endl;
    }
    return 0;
}
2023/6/30 18:23
加载中...