生成唯一的整数组合
Generate Unique Combinations of Integers
我正在寻求有关伪代码的帮助(除非您是 Mark Overmars 的 Game Maker 8.0 的用户并且知道我需要的 GML 等价物)以了解如何生成一组 X 个整数的唯一组合的列表/数组,其大小是可变的。它可以是 1-5 或 1-1000。
例如:
整数列表{1,2,3,4}
1,2
1,3
1,4
2,3
2,4
3,4
我觉得这背后的数学原理很简单,我只是在检查了多个来源以了解如何使用 C++ 和 Java 等语言来完成之后似乎无法理解它。谢谢大家。
由于问题的细节不多,我假设:
- 您输入的是一个自然数n,结果数组包含从
1
到n
的所有自然数。
- 上述组合给出的预期输出类似于对称关系,i。 e.在你的情况下
[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 个嵌套循环来处理数组。外循环范围i
从1
到n - 1
,内循环范围j
从2
到n
。如果您的索引从 0
而不是 1
开始,您必须考虑循环限制。现在,您只需要用 [i, j]
组合填充您的目标数组。要在目标数组中找到正确的索引,您应该使用第三个计数器变量,用第一个索引初始化并在内循环结束时递增。
我同意,背后的数学并不难,我认为这个解释应该足以自己开发相应的代码。
我正在寻求有关伪代码的帮助(除非您是 Mark Overmars 的 Game Maker 8.0 的用户并且知道我需要的 GML 等价物)以了解如何生成一组 X 个整数的唯一组合的列表/数组,其大小是可变的。它可以是 1-5 或 1-1000。
例如:
整数列表{1,2,3,4}
1,2
1,3
1,4
2,3
2,4
3,4
我觉得这背后的数学原理很简单,我只是在检查了多个来源以了解如何使用 C++ 和 Java 等语言来完成之后似乎无法理解它。谢谢大家。
由于问题的细节不多,我假设:
- 您输入的是一个自然数n,结果数组包含从
1
到n
的所有自然数。 - 上述组合给出的预期输出类似于对称关系,i。 e.在你的情况下
[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 个嵌套循环来处理数组。外循环范围i
从1
到n - 1
,内循环范围j
从2
到n
。如果您的索引从 0
而不是 1
开始,您必须考虑循环限制。现在,您只需要用 [i, j]
组合填充您的目标数组。要在目标数组中找到正确的索引,您应该使用第三个计数器变量,用第一个索引初始化并在内循环结束时递增。
我同意,背后的数学并不难,我认为这个解释应该足以自己开发相应的代码。