创建算法以确定电源组中子集的大小

时间:2012-10-19 16:15:25

标签: java c++ algorithm set

我无法为此作业创建算法。如果我能得到一些关于第一个算法开始的提示,我将不胜感激。

此分配的目标是实现和比较各种算法,以计算给定集合的每个可能大小的子集数量。请记住,具有n个元素的集合具有2 ^ n个子集。其中两个算法将用于实际生成子集。 您的程序将有能力要求用户选择,直到他/她希望退出。允许使用程序的GUI,但不是必需的。选择应允许以下内容:

  1. 运行一种算法,该算法基于从0开始计算所有2 ^ n整数(您可能无法使用C / C ++ / Java int数据类型)并确定与每个数字对应的子集的大小。该算法必须以某种方式使用整数除法和模数。它需要返回一个数组,其中包含每个可能大小的子集数。显示每个可能大小的子集数。 n的值将由用户输入确定。应在n。
  2. 上执行错误检查
  3. 运行一个算法,该算法基于从0开始计算所有2 ^ n个整数(您可能无法使用C / C ++ / Java int数据类型)并确定对应于的子集的大小每个号码。该算法必须以某种方式使用位级操作(逻辑和移位)。它需要返回一个数组,其中包含每个可能大小的子集数。显示每个可能大小的子集数。 n的值将由用户输入确定。应在n。

  4. 上执行错误检查
  5. 运行一个算法,为0和n(含)之间的所有k值生成C(n,k),其中n由用户输入确定。该算法需要利用递归因子函数。它需要返回一个数组,其中包含每个可能大小的子集数。显示每个可能大小的子集数。应在n。

  6. 上执行错误检查
  7. 运行一个算法,为0和n(含)之间的所有k值生成C(n,k),其中n由用户输入确定。该算法需要利用迭代因子算法。它需要返回一个数组,其中包含每个可能大小的子集数。显示每个可能大小的子集数。应在n。

  8. 上执行错误检查

1 个答案:

答案 0 :(得分:0)

我发现您的所有问题都与一个主题有关:递归回溯

生成集S的幂集:

function rec( i )
      if i == S.length
         print choocen elements of S
         return
      else
         do not chooce element i of S
         rec(i + 1)
         choose element i of S
         rec(i + 1)

一旦你理解了递归的概念,C(n, k)的问题就差不多了。我不打算为你的任务提供解决方案:)