蓝桥杯_n元一次线性方程组_高斯消元

//
#include<bits/stdc++.h>
using namespace std;

const double EPS=1e-7;
const int N=111;
double in[N][N];

int main()
{
    int n,i,j,k,maxa;
    double tt;

    while( cin>>n )
    {
        memset( in,0,sizeof( in ) );
        for( i=1;i<=n;i++ )
            for( j=1;j<=n+1;j++ )
                cin>>in[i][j];

        for( i=1;i<=n;i++ )
        {
            maxa=i;
            for( j=i+1;j<=n;j++ )
                if( fabs( in[j][i] )>fabs( in[maxa][i] ) ) maxa=j;
                
            for( j=1;j<=n+1;j++ )
                swap( in[maxa][j],in[i][j] );
            if( fabs( in[i][i] )<EPS ) { cout<<"-1"; goto out; }
            
            for( j=n+1;j;j-- ) in[i][j]/=in[i][i];

            for( j=1;j<=n;j++ )
                if( j!=i )
                {
                    tt=in[j][i]/in[i][i];
                    for( k=1;k<=n+1;k++ ) in[j][k]-=in[i][k]*tt;
                }
        }
        for( i=1;i<=n;i++ ) printf("%.2lf\n",in[i][n+1] );
        out:;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_63173957/article/details/125173224
今日推荐