生成英文字母的所有子集——Python代码实现
发布时间
阅读量:
阅读量
题目:存在一个由A-Z这26个英文字母构成的集合,要求使用C/C++语言编写程序,输出该集合的所有子集,每个子集单独占一行,并且不得采用递归方式实现。
分析:该问题可参考《编程之法:面试和算法心得》一书中的相关论述。对于26个大写字母而言,初看似乎难以找到明确的解决思路。以三个字母ABC为例,其所有子集包括:
{}
A
B
C
AB
AC
BC
ABC
若将ABC视为三个二进制位,则可表示为:
000
100
010
001
110
101
011
111
对上述二进制数值进行排序后得到如下序列:
000
001
010
011
100
通过观察可以发现,这些数值的范围是从零到2(3-1)。每一个二进制位上的值为非零时,代表对应的字母被包含在当前子集中。同理,对于26个字母的情况,只需遍历从零到2(26-1)之间的所有整数,并检查每一位是否为一即可生成所有可能的子集。
python代码:
def pl(str_list, n):
for i in range(1, 1
全部评论 (0)
还没有任何评论哟~
