【问题标题】:Recursive method to finding the k element subsets of a set with n elements查找具有 n 个元素的集合的 k 个元素子集的递归方法
【发布时间】:2018-12-06 21:50:04
【问题描述】:

考虑寻找具有 n 个元素的集合的 k 个元素子集的问题。编写一个递归函数,将表示集合的整数数组、集合中的整数个数 (n) 和所需的子集大小 (k) 作为输入,并在屏幕上显示所有具有 k 个元素的子集。您可以假设数组中的元素具有唯一值。例如,如果数组(集合)包含元素 [8 2 6 7],n 为 4,k 为 2,则输出为 82 86 87 26 27 67。

你能帮我解决这个问题吗,至少告诉我应该走哪条路?

【问题讨论】:

标签: recursion


【解决方案1】:

您所说的类型是**组合&&。 Wikipedia page 中间有一个计算的递归定义。

$$\binom{n}{k}=\binom{n-1}{k-1}+\binom{n-1}{k}$$

弄清楚你的基本情况可能很棘手,但我认为你需要的一切都在那里。

【讨论】:

    【解决方案2】:

    我会做这样的事情:

    subset ( numbers, n, k, index)
    {
       if (index < n) // end for the recursion. passed through all elements
       {
          if (k == 0) // end for the recursion. no more elements needed
             print ' '
          else
          {
             print numbers[index]
             subset(numbers, n, k-1, index+1) // uses the number in the current index
    
             subset(numbers, n, k, index+1)   // doesn't use the number in the current index
          }
       }
    
    call subset(numbers, n, k, 0) to start
    

    请注意,由于顺序在集合中不起作用,因此足以在一个方向上传递元素

    【讨论】:

      猜你喜欢
      • 2019-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多