Math 生成唯一的整数组合
我正在寻找伪代码的帮助(除非您是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,4Math 生成唯一的整数组合,math,combinations,pseudocode,Math,Combinations,Pseudocode,我正在寻找伪代码的帮助(除非您是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的所有自然数 上述组合
我觉得后面的数学很简单,我在检查了如何用C++和java语言做的多源之后,似乎无法把它绕过来。谢谢大家。由于问题中没有太多细节,我想:
- 您的输入是一个自然数n,结果数组包含从
到1
的所有自然数n
- 上述组合给出的预期输出类似于对称关系,即。E在您的情况下,
被视为与[1,2]
相同[2,1]
- 组合
不包括在内[x,x]
- 只有两个元素的组合
- 没有
数据类型或动态数组,因此在创建数组之前必须知道数组长度列表
- 因此,结果中的元素数是二项式系数
(在您的示例中是m=n除以2=n!/(2!*(n-2)!
)和4!/(2!*(4-2)!)=24/4=6
代码>是阶乘
i
范围从1
到n-1
,内循环的j
范围从2
到n
。如果索引是从0
开始的,而不是从1
开始的,则必须考虑循环限制。现在,您只需要用组合[i,j]
填充目标数组。要在目标数组中找到正确的索引,应该使用第三个计数器变量,该变量用第一个索引初始化,并在内部循环结束时递增
我同意,背后的数学并没有那么难,我认为这个解释应该足以让你自己开发相应的代码。谢谢,这正是我想说的。你对数据条件的假设和输入都是正确的,我为开始时不够简洁而道歉。很高兴这有帮助:)