读书人

利用C语言非空集合的所有子集不要递

发布时间: 2012-03-20 14:01:11 作者: rapoo

利用C语言求一个非空集合的所有子集,不要递归
如题,求集合的所有子集,但是不要用递归的方法。

[解决办法]

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <string.h>void printSubset(char *set, int length){    int *mark = (int*)malloc(sizeof(int)*(length+1));    int i;    for(i = 0; i <= length; ++i)    {        mark[i] = 0;    }    while(mark[length] == 0)    {        ++mark[0];        for(i = 0; i < length; ++i)        {            if(mark[i] >= 2)            {                ++mark[i+1];                mark[i] -= 2;            }        }        for(i = 0; i < length; ++i)        {            if(mark[i] == 1)                printf("%c  ", set[i]);                    }        printf("\n");    }    free(mark);}int main(){    char set[] = "abcd";    int length = strlen(set);    printSubset(set, length);    system("pause");    return 0;}
[解决办法]
递归和二进制你都否定了,于是我没辙了。。。

读书人网 >C语言

热点推荐