2012-11-15 35 views
0

给定一组字母S = {a,b,c,d,e}生成子集而不干扰顺序

如果输入k = 3,如何生成以下子集?

ABC ABD 安倍 ACD 王牌 ADE BCD BCE BDE CDE

凡亚不违反字母的顺序为S. 是什么这样的问题名称,什么是解决方案?

+0

这不是太难使用递归。你有什么尝试? –

+0

我不能拿出任何有说服力的算法。我搜索网络,但我无法得到适当的算法。这类问题的名称是什么? –

回答

0
  1. 考虑一个由k1和(| S | -k)0组成的5个位置(或者与S中有字符一样多的位置)的二进制串。
  2. 生成上述字符串的全部(| S |!/(k!*(| S | -k)!))排列。
  3. 现在输出对应于1的字符。这不会违反S.中字符的顺序。