gpt4 book ai didi

java - 查找数组中的所有组合

转载 作者:行者123 更新时间:2023-11-30 02:28:37 25 4
gpt4 key购买 nike

我正在使用 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;
}

最佳答案

您的问题可以解释为“获取所有可能的数字表示形式作为其他自然数的总和”。 Here是一个非常好的解决方案。

关于java - 查找数组中的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44869850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com