【发布时间】:2014-08-24 12:28:15
【问题描述】:
我正在尝试实现一个应用程序。它需要以下逻辑。
Set1 {1,2,3,4}
Set2 {22,44}
Set3 {8,9,11}
我需要从每组中选择一个数字。所以总共会有3个数字。但是有很多组合。我的应用程序的每次运行都必须选择不同的组合以获得更好的复杂性。我的意思是
First run : 1 22 8
Second run : 1 44 9
And so on...
所以我需要找出不同大小的集合之间的所有组合。我知道在一组 {1,2,3,4} 中查找的方法。
我不知道任何数学算法。是否有任何逻辑可以在 Java、C 或 C++ 中完成。一般有什么想法吗?
编辑
预期输出是:
1 22 8
1 22 9
1 22 11
1 44 8
1 44 9
1 44 11
2 22 8
2 22 9
and so on
【问题讨论】:
-
有一些函数可以获取随机数,所以你可以做的是从 0 到 n 随机一个数字(其中 n 是可能的集合数)并选择这个集合,这真的取决于你想要什么要做到这一点,您需要更具描述性。我的解决方案将为您提供相同的集合可能性,但它可能不是您想要的。
-
如果我的标签有误,请告诉我。我会编辑它。我的目标只是想法而不是代码
-
递归。你知道如何为一组做;对于 k >= 2 个集合,方法是从第一个集合中选择一个随机元素 x,然后用剩余的 k-1 个集合调用自己,从这些集合中找到一组 k-1 个代表,最后插入x 进入这个集合。
-
@cerkiewny 我会进一步编辑我的问题。
-
我想我需要更多的咖啡,我只是用 Python 写了一个答案......然后意识到这是标记为 C++。