java - 打印子集的最佳递归算法

标签 java algorithm recursion

我正试图找到一个好的递归算法来打印出集合的子集。 例如

大小 5:给出 集合 {1,2,3,4,5} 和长度为 3 的子集给出此输出:

{5,4,3}
{5,4,2}
{5,4,1}
{5,3,2}
{5,3,1}
{5,2,1}
{4,3,2}
{4,3,1}
{4,2,1}
{3,2,1}

我尝试了很多方法,但都不起作用。在 Internet 上,所有示例都使用集合算法,但出于学习目的,我想编写自己的示例。

有人可以帮我吗?

亲切的问候,

最佳答案

要构建递归算法,您可以注意到 {1,2,3,4,5} 中长度为 3 的每个子集:

  • 包含元素“1”和来自 {2,3,4,5} 的 2 个元素。
  • 不包含元素“1”和来自 {2,3,4,5} 的 3 个元素。

这两种情况中的每一种都可以通过递归调用您的函数来实现。

关于java - 打印子集的最佳递归算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561166/

相关文章:

algorithm - 使用曼哈顿距离寻找最近的对

java - 我的快速排序算法需要的主元开关数量与我的作业中的不同的原因可能是什么?

python - 递归检查模式

algorithm - 按递归树排序

java - 如何跨递归堆栈处理同一数组(或 : How to pass a partial solution to the previous/next recursive call to method)

java - 我想用每行不同的值更新 CSV 文件,但代码返回相同的值

java - 为什么我不能将 T 类型转换为比较器中的另一个对象?

java - 如何从字符串中获取drawable?

java - 如何在 Sun JVM 中配置 SAX 解析器以匹配 Android 解析器?

java - O(log n) 编程