回溯法求子集

#include <iostream>

using namespace std;
void get_set(char a[],int b[],int i,int n)
{
    if(i>n)//输出子集
    {
        for(i=1;i<=n;i++)
        {
            if(b[i]==1)
                cout<<a[i];
        }
        cout<<endl;
    }
    else
    {
        b[i]=0;
        get_set(a,b,i+1,n);
        b[i]=1;//回溯
        get_set(a,b,i+1,n);
    }
}
int main()
{
    char a[10];
    int b[10];
    for(int i=1;i<=4;i++)
        cin>>a[i];
    get_set(a,b,1,4);
    return 0;
}

输入:

A B C D

输出

   (空集)
D
C
CD
B
BD
BC
BCD
A
AD
AC
ACD
AB
ABD
ABC
ABCD

    原文作者:回溯法
    原文地址: https://blog.csdn.net/qq_42617565/article/details/82995016
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞