java - 使用不同项目的不同组合

标签 java algorithm combinations

<分区>

我有不同颜色的球:

  • 1个红色,
  • 1 个白色,
  • 5 个橙子,
  • 2 黑色,
  • 0 绿色。

我想用 Java 编写一个算法来计算 3 种不同颜色的最大组合数。

例如,在这种情况下,多种解决方案是可能的,但我寻找最大组合数。此示例中有 2 个:

  • (1 个红色、1 个橙色、1 个黑色)
  • (1 个白色、1 个橙色、1 个黑色)

你能建议我一个解决方案吗? 谢谢!!!

最佳答案

在每个阶段只需选择您最喜欢的 3 种颜色。

例如,假设您有 2 个红色、3 个绿色、7 个蓝色、1 个黄色和 4 个白色。

您应该先选择蓝色、白色和绿色,因为 7、4 和 3 是最大的数字。

然后你有 2 个红色、2 个绿色、6 个蓝色、1 个黄色和 3 个白色。

6、3、2是最大的数,所以要选蓝、白、红/绿(选红绿都无所谓)。

以这种方式继续下去,直到剩下的颜色少于 3 种,并且您会找到最大值。

该算法有效的正式证明出奇地复杂,可以在here 中找到。 .

关于java - 使用不同项目的不同组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36371655/

相关文章:

java - 霍夫曼减压

java - com.fasterxml.jackson.databind.exc.MismatchedInputException : Cannot construct instance of `java.util.LinkedHashMap`

algorithm - 使用预处理在 O(1) 时间内查询数组中的范围中值

algorithm - 排序算法的比较

php - 如何在 PHP 中将两个字符串组合在一起?

java - 设计数据结构以根据键组合选择值

java - 如何使用JTable将更改的数据更新到数据库中?

java - 使用 JSONObject 类获取此数组的值

algorithm - Ford-Fulkerson 算法在具有权重 1 的链接的图中

r - 通过行组合索引矩阵时避免应用