首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-20 
利用C语言求一个非空集合的所有子集,不要递归如题,求集合的所有子集,但是不要用递归的方法。[解决办法]C/C+

利用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;}
[解决办法]
递归和二进制你都否定了,于是我没辙了。。。

热点排行