全局变量/映射更新失败

问题描述

我正在尝试打印给定总和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;

   }
}

输出标记1

4 0

3 0

2 0

1 0

0 0

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)