1011 World Cup Betting (20)(20 分)

ball Lottery provided a "Triple Winning" game. The rule of winning was simple: first select any three of the games. Then for each selected game, bet on one of the three possible results -- namely W for win, T for tie, and L for lose. There was an odd assigned to each result. The winner's odd would be the product of the three odds times 65%.ios

For example, 3 games' odds are given as the following:ide

W    T    L
1.1  2.5  1.7
1.2  3.0  1.6
4.1  1.2  1.1

To obtain the maximum profit, one must buy W for the 3rd game, T for the 2nd game, and T for the 1st game. If each bet takes 2 yuans, then the maximum profit would be (4.1*3.0*2.5*65%-1)*2 = 37.98 yuans (accurate up to 2 decimal places).spa

Inputcode

Each input file contains one test case. Each case contains the betting information of 3 games. Each game occupies a line with three distinct odds corresponding to W, T and L.orm

Outputblog

For each test case, print in one line the best bet of each game, and the maximum profit accurate up to 2 decimal places. The characters and the number must be separated by one space.three

Sample Inputip

1.1 2.5 1.7
1.2 3.0 1.6
4.1 1.2 1.1

Sample Outputci




输入3行3列 9个数字
每行的3个数字表示一场比赛的三种可能性
要想得到最大利润, 则取每场比赛的三个可能中获利最大的那个
再带入公式计算最大总利润

T T W 37.98
#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std ; 

#define maxn 10

char flag[maxn] = {'W','T','L'} ; // 每场比赛三种比赛结果的标志
double num[maxn][maxn] ; 
int maxipos[maxn] ; 

// 返回第 i 场比赛中得到利润最大的的那一场的下标
int check(int i){
    int maxinum = num[i][0] ; 
    int pos = 0 ; 
    for(int j=0 ; j<3 ; j++){
        if(maxinum < num[i][j]){
            maxinum = num[i][j] ; 
            pos = j ; 
        }
    }
    return pos ; 
}

int main(){

    int n = 3 ; 

    for(int i=0 ; i<n ; i++){
        for(int j=0 ; j<n ; j++){
            cin >> num[i][j] ; 
        }
    }

    double result = 1.0 ; 
    for(int i=0 ; i<n ; i++){
        int pos = check(i) ; 
        result *= num[i][pos] ; // 累乘三场比赛的最大获利

        maxipos[i] = pos ; 

    }

    result = (result * 0.65 -1) * 2 ; // 带入公式,题目说了下注 2 元
    
    for(int i=0 ; i<n ; i++){
        cout << flag[maxipos[i]] << " " ; 
    }
    printf("%.2f\n" , result) ; 

    return 0 ; 
}
相关文章
相关标签/搜索