Math 生成唯一的整数组合

Math 生成唯一的整数组合,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的所有自然数 上述组合

我正在寻找伪代码的帮助(除非您是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
    的所有自然数
  • 上述组合给出的预期输出类似于对称关系,即。E在您的情况下,
    [1,2]
    被视为与
    [2,1]
    相同
  • 组合
    [x,x]
    不包括在内
  • 只有两个元素的组合
  • 没有
    列表
    数据类型或动态数组,因此在创建数组之前必须知道数组长度
  • 因此,结果中的元素数是二项式系数
    m=n除以2=n!/(2!*(n-2)!
    (在您的示例中是
    4!/(2!*(4-2)!)=24/4=6
    )和
    是阶乘
首先,使用数组元素索引初始化具有前n个自然数的数组应该非常容易。但是,索引是数组元素的一个属性,因此不需要首先初始化它们

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


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

谢谢,这正是我想说的。你对数据条件的假设和输入都是正确的,我为开始时不够简洁而道歉。很高兴这有帮助:)