UVA 12849 Mother’s Jam Puzzle( 高斯消元 )


题目: http://uva.onlinejudge.org/external/128/12849.pdf

#include <bits/stdc++.h>
using namespace std;
typedef long long LL ;
typedef unsigned long long ULL ;
typedef pair<int,int> pii;
#define X first
#define Y second
const int N = 5 ;
const int mod = 1e9+7 ;
const double K = 100000;
double A[N][N] ;

void solve( int n ) {
    int i , k , j , r ;
    for( i = 0 ; i < n ; ++i ) {
        r = i ;
        for( j = i + 1 ; j < n ; ++j )
            if( fabs(A[j][i]) > fabs( A[r][i] ) ) r = j ;

        if( r != i ) for( j = 0 ; j <= n ; ++j ) swap( A[r][j] , A[i][j] ) ;

        for( j = n ; j >= i ; j-- ) {
            for( k = i + 1 ; k < n ; ++k ) {
                A[k][j] -= A[k][i] / A[i][i] * A[i][j] ;
            }
        }
    }
    for( i = n-1 ; i >=0 ; i-- ) {
        for( j = i + 1 ; j < n ; ++j )
            A[i][n] -= A[j][n] * A[i][j] ;
        A[i][n] /= A[i][i];
    }
}

int Run() {
    int _ , cas = 1 ; scanf("%d",&_);
    while( _-- ) {
        printf("Case %d: ",cas++);
        for( int i = 0 ; i < 3 ; ++i ) {
            for( int j = 0 ; j < 4 ; ++j ) {
                scanf("%lf",&A[i][j]);
                A[i][j] *= K ;
            }
        }
        solve(3) ;
        printf("%.2lf %.2lf %.2lf\n",A[0][3],A[1][3],A[2][3]);
    }
    return 0 ;
}

int main()
{
    #ifdef LOCAL
        freopen("in","r",stdin);
    #endif
    ios::sync_with_stdio(0);
    return Run();
}
View Code

 

posted @ 2015-03-27 12:09  hl_mark  阅读(179)  评论(0编辑  收藏  举报