目标和问题
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
vector<int> m = { 5,6,7,8,9,10,11,12,14,15 };
vector<int> ans;
int des = 28;
int len = m.size();
for (int i = 1; i < pow(2, m.size());i++) {
int t = i,sum=0,j=0;
ans.clear();
while (t) {
sum += (t % 2) * m[m.size() - j - 1];
if(t%2)ans.push_back(m[m.size() - j - 1]);
j++;
t /= 2;
}
if (sum == des) {
for (int k = 0; k < ans.size();k++) {
cout << ans[k] << ',';
}
cout << endl;
}
}
return 0;
}//穷举法利用位操作