目标和问题

#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;
}//穷举法利用位操作
posted @ 2021-11-18 20:21  Zupernova  阅读(16)  评论(0编辑  收藏  举报