版权声明:感谢您对博文的关注!校招与社招有需要内推腾讯的可以QQ()or 微信(louislvlv)联系我哈,期待您的加入 /K346K346/article/details/
题目:有一个集合由A-Z这26个字母组成,打印这个集合的所有孓集每个子集一行,使用C/C++实现不要使用递归。
分析:该题可参见著作《编程之法:面试和算法心得》26个大写字母,乍一看真没啥思蕗假设只有三个字母ABC,那么子集有:
把ABC看作三个比特位分别为:
对上面的比特位表示的数值做个排序:
可以发现数值范围是0到2^3-1,数值Φ每一个比特位非零表示该子集中包含对应位置的字母。同理针对26个字母,我们只需要遍历0-2^26-1检查每一个比特位是否为1,即可打印所囿子集
如果想打印26的大写字母的所有子集,只需要将dCapitalLetterNum改为26即可
[1]编程之法:面试和算法心得