我无法为此作业创建算法。如果我能得到一些关于谁从第一个算法开始的提示,我将不胜感激。
该任务的目标是实现和比较各种算法,以计算给定集合的每个可能大小的子集数量。请记住,具有 n 个元素的集合有 2^n 个子集。其中两种算法将用于实际生成子集。您的程序将能够要求用户做出选择,直到他/她希望退出。您的程序的 GUI 是允许的,但不是必需的。选择应允许以下内容:
- 运行一个算法,该算法基于从 0 开始计算所有 2^n 个整数(您可能无法使用 C/C++/Java int 数据类型)并确定与每个数字对应的子集的大小。该算法必须以某种方式使用整数除法和模数。它需要返回一个数组,其中包含每个可能大小的子集的数量。显示每个可能大小的子集数。n 的值将由用户输入确定。应在 n 上执行错误检查。
运行一个算法,该算法基于从 0 开始计算所有 2^n 个整数(您可能无法使用 C/C++/Java int 数据类型)并确定与每个数字对应的子集的大小。该算法必须以某种方式使用位级操作(逻辑与移位)。它需要返回一个数组,其中包含每个可能大小的子集的数量。显示每个可能大小的子集数。n 的值将由用户输入确定。应在 n 上执行错误检查。
运行一个算法,为 0 到 n(含)之间的所有 k 值生成 C(n,k),其中 n 由用户输入确定。该算法需要利用递归阶乘函数。它需要返回一个数组,其中包含每个可能大小的子集的数量。显示每个可能大小的子集数。应在 n 上执行错误检查。
运行一个算法,为 0 到 n(含)之间的所有 k 值生成 C(n,k),其中 n 由用户输入确定。该算法需要利用迭代阶乘算法。它需要返回一个数组,其中包含每个可能大小的子集的数量。显示每个可能大小的子集数。应在 n 上执行错误检查。