【发布时间】:2012-12-17 17:48:03
【问题描述】:
我计算出一种方法的所有可能组合的最简单方法是什么?这是我正在尝试解决的示例类;
class Combinations {
public void generate()
{
final int TOTAL_A = 10;
final int TOTAL_B = 21; // TOTAL_B is used twice
final int TOTAL_C = 17;
final int TOTAL_Z = 20;
int count = 0;
for (int a = 0; a < TOTAL_A; a++)
{
for (int b = 0; b < TOTAL_B; b++)
{
for (int b_two = 0; b_two < TOTAL_B; b_two++)
{
for (int c = 0; c < TOTAL_C; c++)
{
for (int one = 0; one < TOTAL_Z; one++)
for (int two = one + 1; two < TOTAL_Z; two++)
for (int three = two + 1; three < TOTAL_Z; three++)
for (int four = three + 1; four < TOTAL_Z; four++)
for (int five = four + 1; five < TOTAL_Z; five++)
count++;
}
}
}
}
System.out.println("Total combinations: " + count);
}
}
在不必实际执行循环的情况下找出“计数”的方法是什么?
【问题讨论】:
-
你为什么不用文字来解释你想要计算的究竟是什么?
-
我正在尝试解决一个拼图组合,它需要前 4 个循环中的 4 个唯一对象,第二个对象与第三个对象具有相同的资源大小。在此之后,我必须选择 5 个其他唯一的对象,例如,它们不能具有相同的对象。这就是最后一个数字的 + 1 的来源。
-
一个更好的解释,如果可能的话?反正你在做 8 个嵌套的 for 循环,那可能是错的。
-
你是问有多少不同的组合存在给定计数 A、B1、B2、C 和 Z,其中 B1 和 B2 的大小相同?
-
请花一些时间修改您的问题并更好地解释您想要做什么。就目前的问题而言,即使您试图在 cmets 中澄清,也非常不清楚。
标签: java math recursion combinations