获取元素的所有组合和元素可以在单个组合中重复多次

get all combinations of elements and elements can be repeat many times in single combination

我在获取元素的所有组合时遇到问题,元素可以重复和重复使用多次,即使是在一个组合中也是如此。
例如,我有一个 100 cm2 的盒子,那么我有以下对象:
1)物体A:20cm2
2) 物体B: 50cm2

预期的组合是:(A), (A, A), (A, A, A), (A, A, A, A), (A, A, A, A, A) , (A, B), (A, B, A), (A, B, A, A) .....

允许任意组合,只要它们能装进盒子。对象可以在单个组合中重复多次。但是,不需要重复的模式,例如(A, B) 等于 (B, A)。

我不确定搜索此问题的关键字是什么,如果这是一个重复的问题,请告诉我。

在我看来,递归算法可以完成这项工作:适合第一个对象,然后将下一个对象(包括您刚刚包含的对象)的所有组合添加到缩小尺寸的框中。

然后对第二个对象执行相同的操作,始终使用与行中下一个对象的组合,而不是之前的对象(不能在 B 之后有 A)。

以您的示例为例,您将拥有:

  • (一)
    • (A,A)
      • (A,A,A)
        • (A,A,A,A)
          • (A,A,A,A,A)
          • (A,A,A,A,B) 不起作用
        • (A,A,A,B) 无效
      • (A,A,B)
    • (A,B)
      • (A,B,B) 无效
  • (B)
  • (B,B)