我正在寻找伪代码的帮助(除非你是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等语言完成它的来源之后似乎无法绕过它。谢谢大家。
答案 0 :(得分:1)
由于问题中的细节不多,我假设:
1
到n
的所有自然数。[1, 2]
被视为与[2, 1]
相同。[x, x]
。List<>
数据类型或动态数组,因此在创建数组之前必须知道数组长度。m = n over 2 = n! / (2! * (n - 2)!)
(在您的示例中为4! / (2! * (4 - 2)!) = 24 / 4 = 6
)!
是因子。首先,使用数组元素索引初始化具有前n个自然数的数组应该非常容易。但是,索引是数组元素的属性,因此您不需要首先初始化它们。
您需要2个嵌套循环来处理数组。外部循环从i
到1
范围n - 1
,内部循环从j
范围2
到n
。如果索引从0
而不是1
开始,则必须考虑循环限制。现在,您只需要使用组合[i, j]
填充目标数组。要在目标数组中找到正确的索引,您应该使用第三个计数器变量,使用第一个索引初始化,并在内部循环结束时递增。
我同意,背后的数学并不那么难,我认为这个解释应该足以自己开发相应的代码。