子集和问题

来源:互联网 发布:replace sql 编辑:程序博客网 时间:2024/06/05 01:18

子集和问题用子集树算法比较简单,此专题未完待续

void subSetSum(int a[],int n,int i, int sum, int currSum, int &num, vector<int> & vt) {    if (i == n) {        if (currSum + a[i] == sum)        {            ++ num;            vt.push_back(a[i]);            for (int j = 0; j<vt.size(); ++j) cout<<vt[j]<<" ";            cout<<endl;            vt.pop_back();        }        return;    }        vt.push_back(a[i]);    if (currSum + a[i] == sum)    {        ++ num;                for (int j = 0; j<vt.size(); ++j) cout<<vt[j]<<" ";        cout<<endl;           }    subSetSum(a,6,i +1,sum,currSum + a[i],num,vt);    vt.pop_back();    subSetSum(a,6,i +1,sum,currSum,num,vt);}int main() {    int a[6] = {1,5,-2,2,1,3};//sum = 3;    int num = 0;    vector<int> vt;    subSetSum(a,6,0,3,0,num,vt);    cout<<num<<endl;}