我正在使用Java在Android Studio中開發遊戲,並且對計數得分的方法有些麻煩。基本上在遊戲中,我有一組數值從1到6的骰子。在這些值中,我需要找出特殊值出現的次數。查找數組中的所有組合
現在我有這使得它尋找所有的單值做工精細的方法(如具有的值的所有骰子5),並且還如果兩個骰子加起來特殊值(如2 + 3或1 + 4)。但是,當有多於兩個骰子加起來的數字(如1 + 1 + 3)時,它沒有找到特殊值。
例如:如果我有骰子值爲[1,2,2,2, 3,5] 結果應該是三個「numberOfPairs」(1 + 2 + 2,2 + 3,5),因此方法應該返回15,但對於我來說它只返回10。一些想法如何改變這種方法更好地工作。
這裏是我一直在工作的方法:
public static int evaluatePoints(Dice dices[], int sumToReach) {
int values[] = new int[dices.length];
int numberOfPairs = 0;
int left = 0;
int right = values.length - 1;
for(int i = 0; i < dices.length; i++){
values[i] = dices[i].getValue();
if(values[i] == sumToReach){
numberOfPairs++;
values[i] = 0;
}
}
Arrays.sort(values);
while (values[right] > sumToReach + values[0]) {
right--;
}
while (left < right) {
if (values[left] + values[right] == sumToReach) {
numberOfPairs++;
left++;
right--;
}
else if(values[left] + values[right] < sumToReach) {
left++;
}
else right--;
}
return numberOfPairs*sumToReach;
}
請以[Dice dices []'失敗的示例發佈[mcve] – c0der
@ c0der示例:我正在查找值5。如果我有骰子值[1,2,2,2,3,3]結果應該是三個「numberOfPairs」(1 + 2 + 2,2 + 3,5),因此該方法應該返回15,但是 –
如果你認爲所有組合都應該出現兩次,2 + 3應該出現兩次,3 + 2應該出現3次,而2 + 2 + 1應該出現兩次'也是一個有效的組合 – c0der