【发布时间】:2013-01-21 12:15:24
【问题描述】:
我需要通过组合其中的数字来减小集合的大小。我需要所有可能的组合。 这里有两个例子可以说明我的情况。
1) Set1 有 4 个条目,Set2 有 2 个条目。所以我们需要在每种情况下组合两个数字。
Set1 = {70, 100, 50, 200}; Set2 = {"part1", "part2"}
All combinations I want to retrive should look like following:
"part1" |"part2"
70 + 100 | 50 + 200
70 + 50 | 100 + 200
70 + 200 | 50 + 100
100 + 50 | 70 + 200
100 + 200 | 50 + 70
50 + 200 | 100 + 70
50 | 70 + 100 + 200
70 | 50 + 100 + 200
100 | 50 + 70 + 200
200 | 50 + 70 + 100
70 + 100 + 200 | 50
50 + 100 + 200 | 70
50 + 70 + 200 | 100
50 + 70 + 100 | 200
2) Set1 有 4 个条目,Set2 有 3 个条目。所以我们只需将两个数字组合一次。
Set1 = {70, 100, 50, 200}; Set2 = {"part1", "part2", "part3"}
All combinations I want to retrive should look like following:
"part1" |"part2" |"part3"
70 | 100 | 50 + 200
70 | 50 | 100 + 200
70 | 200 | 50 + 100
50 | 70 | 100 + 200
50 | 100 | 70 + 200
50 | 200 | 70 + 100
100 | 70 | 50 + 200
100 | 200 | 50 + 70
100 | 50 | 200 + 70
200 | 70 | 50 + 100
200 | 100 | 50 + 70
200 | 50 | 70 + 100
70 | 50 + 200 | 100
70 | 100 + 200 | 50
70 | 50 + 100 | 200
50 | 100 + 200 | 70
50 | 200 + 70 | 100
50 | 70 + 100 | 200
100 | 50 + 200 | 70
100 | 50 + 70 | 200
100 | 200 + 70 | 50
200 | 50 + 100 | 70
200 | 50 + 70 | 100
200 | 70 + 100 | 50
50 + 200 | 100 | 70
100 + 200 | 50 | 70
50 + 100 | 200 | 70
100 + 200 | 70 | 50
70 + 200 | 100 | 50
70 + 100 | 200 | 50
50 + 200 | 70 | 100
50 + 70 | 200 | 100
200 + 70 | 50 | 100
50 + 100 | 70 | 200
50 + 70 | 100 | 200
70 + 100 | 50 | 200
感谢您的帮助。我想不出任何词语来更好地解释我的担忧。但我很乐意回答任何问题。在你的帮助下,我也许能够证实我的问题。 虽然应用程序是用 C# 编写的,但我不一定需要源代码。我的问题是概念而不是实现。
提前致谢!
【问题讨论】:
-
因此,给定一个集合
Set1和另一个大小为s的集合Set2,您想将Set1中的所有partitions 查找到s部分中,其中1 部分的顺序很重要,2 部分中的元素顺序无关紧要,3 每个部分中的元素数量几乎相等. -
非常感谢您迄今为止的努力@Rawling。假设 1 和 2 正确。每个部分 (3) 中的元素数量不必几乎相等。我宁愿得到所有可能的组合。只能避免空分区。
-
好的;在这种情况下,您在第一个示例中又少了 8 行 :)
-
是的,你又是对的!我添加了缺失的可能性。
-
您需要某种排序或任何顺序的可能输出?