字符串的所有组合

来源:互联网 发布:windows关机指令 编辑:程序博客网 时间:2024/06/10 09:18

分析:字符串长度为n,则会有2^n个子集,,除去空集。则剩下2^n-1个子集,可用模拟二进制加法的思路来求解。

比如字符串abc,长度为3,子集数为8,出去空集,则剩下7个子集,模拟二进制加法过程如下

001        a

010        b

011        ab

100        c

101        ac

110        bc

111        abc

#include <stdio.h>#include <math.h>#include <string.h>int main(){char a[] = "abc";int len = strlen(a);int num = pow(2,len);int i,j;for(i=1;i<num;i++){for(j=0;j<len;j++){if(i>>j&1)printf("%c",a[j]);}printf("\n");}return 0;}