问题描述
我正在尝试打印给定总和M的子集(此处M = 27)。 选择子集元素后输出子集时出现问题。 为什么选择的不在这里更新?
#include<bits/stdc++.h>
using namespace std;
int flag=0;
vector <int>a = {2,9,15,16};
unordered_map<int,bool>**chosen**;
void exhaustion(int x,int sum);
int main()
{
exhaustion(0,0);
cout <<"flag "<< flag;
cout << endl;
for(auto i=chosen.begin();i!=chosen.end();++i)
cout << i->first<< " "<< i->second <<"\n";
if(flag){
for(int i=0;i<4;i++)
{
if(chosen[i]==true)
cout <<a[i]<< " ";
}
}
return 0;
}
void exhaustion(int x,int sum){
if (x<=4){
chosen[x]=true;
exhaustion(x+1,sum + a[x]);
chosen[x]=false;
exhaustion(x+1,sum);
}
else{
if(sum=27)
flag=1;
}
}
4 0
3 0
2 0
1 0
0 0
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)