Used In: SRM 146
Used As: Division II Level One
Problem Statement
This task is about the scoring in the first phase of the die-game Yahtzee, where five dice are used. The score is determined by the values on the upward die faces after a roll. The player gets to choose a value, and all dice that show the chosen value are considered active. The score is simply the sum of values on active dice.
Say, for instance, that a player ends up with the die faces showing 2, 2, 3, 5 and 4. Choosing the value two makes the dice showing 2 active and yields a score of 2 + 2 = 4, while choosing 5 makes the one die showing 5 active, yielding a score of 5.
Your method will take as input an int[] toss, where each element represents the upward face of a die, and return the maximum possible score with these values.
Definition
Class: YahtzeeScore
Method: maxPoints
Parameters: int[]
Returns: int
Method signature: int maxPoints(int[] toss)
(be sure your method is public)
Constraints
- toss will contain exactly 5 elements.
- Each element of toss will be between 1 and 6, inclusive.
Examples
{ 2, 2, 3, 5, 4 }
Returns: 5
The example from the text.{ 6, 4, 1, 1, 3 }
Returns: 6
Selecting 1 as active yields 1 + 1 = 2, selecting 3 yields 3, selecting 4 yields 4 and selecting 6 yields 6, which is the maximum number of points.{ 5, 3, 5, 3, 3 }
Returns: 10
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class YahtzeeScore {
public:
int maxPoints(vector<int> toss) {
vector<int> sum(7, 0);
for (int i = 0; i < 5; ++i) {
sum[toss[i]] += toss[i];
}
return *max_element(sum.begin(), sum.end());
}
};