两对:如果有两对具有相同数字的骰子,则玩家得分这些骰子的总和.如果不是,则玩家得分为0.例如,放在"两对"上的1,1,2,3,3给出8.
例子:1,1,2,3,3结果8 1,1,2,3,4结果0 1,1,2,2,2结果6
如何有效地找到这个?
我一直在使用以下代码来查找一对
int max_difference = 0;
int val1 = 0 , val2 = 0;
Arrays.sort(dice);
for (int i = 0; i < dice.length - 1; i++) {
int x = dice[i+1] - dice[i];
if(x <= max_difference) {
max_difference = x;
val1 = dice[i];
val2 = dice[i+1];
}
}
pairScore = val1 + val2;
Run Code Online (Sandbox Code Playgroud)
没有必要让它变得那么复杂,因为你只是在搜索结果数...
int prev = 0;
int result = 0;
int pairs = 0;
Arrays.sort(dice);
for (int i = 0; i < dice.length; i++)
{
int current = dice[i];
if (current == prev)
{
result += current*2;
pairs++;
prev = 0;
}
else prev = current;
}
if (pairs == 2) return result;
else return 0;
Run Code Online (Sandbox Code Playgroud)