从键盘输入任意一个非空集合,求集合的幂集。

用C语言从键盘输入任意一个非空集合,求集合的幂集。这是离散数学

解答如下


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5

void fun(char *arr, int len, int index, char *res, int resi)
{
    if(len == 0 || index >= strlen(arr) || resi == strlen(arr)-1)
    {
        if(res[0] != 0)
            puts(res);
        return ;
    }
    else
    {
        res[resi] = arr[index];
        if(index == strlen(arr)-1 && len == 1) 
            puts(res);
        for(int i=index+1; i<strlen(arr); i++)
        {
            if(len-1 == 0)  i=strlen(arr);
            fun(arr,len-1,i,res,resi+1);     
        }
    }
}

int main()
{
    char arr[N+1] = "abcde";
    puts("NULL");

    for(int i=1; i<strlen(arr); i++)
    {
        for(int j=0; j<strlen(arr)-i+1; j++)
        {
            char res[N+1]={0};
            fun(arr,i,j,res,0);
        }
    }

    return 0;
}

img