第一题: #include <iostream> #include<vector> #include<algorithm> #include <numeric> #include <limits> using namespace std; void combinationSum2DFS(vector<int> &num, int target, int start,  bool &falg) {     if (target == 0) { falg = true; return; }     for (int i = start; i < num.size(); ++i) {         if (target < num[i])return;         //out.push_back(num[i]);         combinationSum2DFS(num, target - num[i], i + 1, falg);         //out.pop_back();         while (i < num.size() - 1 && num[i] == num[i + 1])i++;         if (falg == true)             return;     } } bool miHomeGiftBag(vector<int> &num, int target) {     bool falg = false;     vector<int> out;     sort(num.begin(), num.end());     combinationSum2DFS(num, target, 0,  falg);     if (falg)         return true;     else return false; } int main() {     bool res;     int _p_size = 0;     cin >> _p_size;     vector<int> _p(_p_size, 0);     int _p_item;     for (int _p_i = 0; _p_i<_p_size; _p_i++) {         cin >> _p_item;         _p[_p_i] = _p_item;     }     int _M;     cin >> _M;     res = miHomeGiftBag(_p, _M);     cout << res << endl;     return 0; }
点赞 2

相关推荐

牛客网
牛客企业服务