C++ 求一个数组的全部子集(使用string类型)

输入[1,2,5,8]

输出:[],[1],[2]...[1,2,5,8]

// 输出数组的全部子集
//用递归

#include <iostream>
#include <string>
using namespace std;

//

string AddForEach(string str,int e){
    //用]分割string,为每个[] 中添加e
    string str2; //要

    bool isBlank =true;//控制[后有没有数字
    bool leftBraket=false;//左括号已存在标志
    for(int i=0;i<str.length();i++){
         if('['==str[i]){
            leftBraket=true;
            isBlank =true;

         }else if(']'==str[i]){
             if(isBlank){
                    str2=str2+to_string(e);
             }
             else{
                str2=str2+','+to_string(e);
             }

            leftBraket=false;
            //isBlank = true;
        }else{
            if(leftBraket && isBlank) isBlank=false;//左括号已有,紧接着是非右括号的字符,说明不为空。
            //str2+=to_string(str[i]);
        }
        str2+=str[i];
    }
    return str2;

}
string FindSubSet(int a[],int sizeofA){//找数组的所有子集
    if(sizeofA==0){
            string s="[]";
   cout<<s<<endl;
        return s;
    }
    int t=--sizeofA;
    string str=FindSubSet(a,t);
  //  printf("str:%s\n",str.c_str());
    string str2=AddForEach(str,a[t]);
    // printf("str2:%s\n",str2.c_str());
     // printf("str+ ','+str2:%s",(str+ ","+str2).c_str());
    return str+ ","+str2;
}


int main()
{
    int a[]={1,2,5,18};
    string str=FindSubSet(a,sizeof(a)/sizeof(int));//sizeof会数出字节数
    cout << str<< endl;
    return 0;
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值