获取元素的所有组合和元素可以在单个组合中重复多次
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)
我在获取元素的所有组合时遇到问题,元素可以重复和重复使用多次,即使是在一个组合中也是如此。
例如,我有一个 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,A,A)
- (A,A,B)
- (A,A,A)
- (A,B)
- (A,B,B) 无效
- (A,A)
- (B)
- (B,B)