生成整数的唯一组合

时间:2017-10-26 15:48:52

标签: math combinations pseudocode

我正在寻找伪代码的帮助(除非你是Mark Overmars的Game Maker 8.0的用户,并且知道我需要的GML等同于)如何生成列表/数组一组X个整数的唯一组合,其大小是可变的。它可以是1-5或1-1000。

例如:

IntegerList {1,2,3,4}

1,2

1,3

1,4

2,3

2,4

3,4

我觉得这背后的数学很简单我在查看多个关于如何用C ++和Java等语言完成它的来源之后似乎无法绕过它。谢谢大家。

1 个答案:

答案 0 :(得分:1)

由于问题中的细节不多,我假设:

  • 您的输入是自然数n,结果数组包含从1n的所有自然数。
  • 上述组合给出的预期输出,类似于对称关系,即。即在您的情况下,[1, 2]被视为与[2, 1]相同。
  • 不包括组合[x, x]
  • 只有2个元素的组合。
  • 没有List<>数据类型或动态数组,因此在创建数组之前必须知道数组长度。
  • 因此,结果中的元素数量是二项式系数m = n over 2 = n! / (2! * (n - 2)!)(在您的示例中为4! / (2! * (4 - 2)!) = 24 / 4 = 6!是因子。

首先,使用数组元素索引初始化具有前n个自然数的数组应该非常容易。但是,索引是数组元素的属性,因此您不需要首先初始化它们。

您需要2个嵌套循环来处理数组。外部循环从i1范围n - 1,内部循环从j范围2n。如果索引从0而不是1开始,则必须考虑循环限制。现在,您只需要使用组合[i, j]填充目标数组。要在目标数组中找到正确的索引,您应该使用第三个计数器变量,使用第一个索引初始化,并在内部循环结束时递增。

我同意,背后的数学并不那么难,我认为这个解释应该足以自己开发相应的代码。

相关问题