fork download
  1. #include<bits/stdc++.h>
  2. #define endl "\n"
  3. using namespace std;
  4. typedef long long ll;
  5. const int mod = 1e9 + 7;
  6.  
  7. int main(){
  8. int n, k, count = 0;
  9. cin >> n >> k;
  10. vector<int> a(n);
  11. for(int &num : a)
  12. cin >> num;
  13.  
  14. int x = 1 << n;
  15. vector<vector<int>> results;
  16. for(int i=0; i<x; i++){
  17. vector<int> v;
  18. int sum = 0;
  19. for(int j=0; j<n; j++){
  20. if(i & (1<<j)){
  21. v.push_back(a[j]);
  22. sum += a[j];
  23. }
  24. }
  25. if(sum == k){
  26. sort(v.begin(), v.end()); // Sắp xếp từng tập con theo thứ tự tăng dần
  27. results.push_back(v);
  28. count++;
  29. }
  30. }
  31.  
  32. sort(results.begin(), results.end(), [](const vector<int>& a, const vector<int>& b) {
  33. if (a.size() != b.size()) return a.size() < b.size();
  34. return a < b;
  35. });
  36.  
  37. for(const auto &v : results){
  38. for(int num : v)
  39. cout << num << " ";
  40. cout << endl;
  41. }
  42.  
  43. cout << count << endl;
  44. return 0;
  45. }
  46.  
Success #stdin #stdout 0.01s 5268KB
stdin
5 50
5 10 15 20 25
stdout
5 20 25 
10 15 25 
5 10 15 20 
3