1. 程式人生 > >PAT-ADVANCED1011——World Cup Betting

PAT-ADVANCED1011——World Cup Betting

我的PAT-ADVANCED程式碼倉:https://github.com/617076674/PAT-ADVANCED

原題連結:https://pintia.cn/problem-sets/994805342720868352/problems/994805504927186944

題目描述:

題目翻譯:

1011 世界盃打賭

隨著2010年FIFA世界盃的舉辦,世界各地的足球迷越來越興奮,因為來自頂級球隊的頂級球員們在南非爭奪世界盃獎盃。同樣,足球博彩迷通過各種世界盃投注錢。

中國足球彩票提供了“三贏”遊戲。獲勝的規則很簡單:首先選擇任意三場比賽。然後對於每個選定的遊戲,下注三個可能的結果之一——即W代表勝利,T代表領帶,L代表失敗。每個結果都有一個特定的賠率。 獲勝者收入將是三次賠率乘積的65%。

例如,3場比賽的賠率如下:

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

要獲得最大利潤,必須購買第3場比賽的W,第2場比賽的T和第1場比賽的T。如果每次下注2元,則最大利潤為(4.1 × 3.1 × 2.5 × 65% - 1) × 2 = 39.31元(精確到2位小數)。

輸入格式:

每個輸入檔案包含一個測試用例。每個案例包含3場比賽的投注資訊。每場比賽佔據一行,其中三個不同的賠率對應於W,T和L。

輸出格式:

對每個測試用例,在一行中列印每個遊戲的最佳賭注,最大利潤精確到小數點後2位。字元和數字必須用一個空格分隔。

輸入樣例:

1.1 2.5 1.7
1.2 3.1 1.6
4.1 1.2 1.1

輸出樣例:

T T W 39.31

知識點:求最值

思路:求每行的最大值

時間複雜度和空間複雜度的分析對本題來說意義不大。

C++程式碼:

#include<iostream>

using namespace std;

int main(){
	char result[3] = {'W', 'T', 'L'};
	double max, num;
	int index;
	double profit = 1.0;
	for(int i = 0; i < 3; i++){
		max = 0.0;
		index = -1;
		for(int j = 0; j < 3; j++){
			scanf("%lf", &num);
			if(num > max){
				max = num;
				index = j;
			}
		}
		printf("%c ", result[index]);
		profit *= max;
	}
	printf("%.2f\n", (profit * 0.65 - 1) * 2);
} 

C++解題報告: