fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define pb push_back
  5. #define nl '\n'
  6. #define py cout << "YES\n"
  7. #define pn cout << "NO\n"
  8. #define no_dup s.erase(unique(s.begin(), s.end()), s.end());
  9. const double eps = 1e-7;
  10.  
  11.  
  12. void fastio() {
  13. ios_base::sync_with_stdio(false);
  14. cin.tie(nullptr);
  15. cout.tie(nullptr);
  16. }
  17.  
  18. //Generate all combinations use BackTrack Algorithm
  19. void generateBitStrings(int i, vector<int>& b, vector<vector<int>>& bitstrings) {
  20. if (i == (int)b.size()) {
  21. bitstrings.push_back(b);
  22. return;
  23. }
  24. b[i] = 0;
  25. generateBitStrings(i + 1, b, bitstrings);
  26. b[i] = 1;
  27. generateBitStrings(i + 1, b, bitstrings);
  28. }
  29.  
  30. void solve() {
  31. set<char> charSet = {'A', 'B', 'C'};
  32. vector<char> s(charSet.begin(), charSet.end());
  33. int n = s.size();
  34.  
  35. vector<int> b(n, 0);
  36. vector<vector<int>> bitstrings;
  37. generateBitStrings(0, b, bitstrings);
  38.  
  39. vector<vector<char>> subsets;
  40. for (const auto& bitstring : bitstrings) {
  41. vector<char> subset;
  42. for (int i = 0; i < n; i++) {
  43. if (bitstring[i] == 1) {
  44. subset.push_back(s[i]);
  45. }
  46. }
  47. subsets.push_back(subset);
  48. }
  49.  
  50. for (const auto& subset : subsets) {
  51. if(subset.size()==0){
  52. cout<<"empty set"<<nl;
  53. continue;
  54. }
  55. for (char value : subset) {
  56. cout << value << " ";
  57. }
  58. cout << nl;
  59. }
  60. }
  61.  
  62. int main() {
  63. fastio();
  64. int t = 1;
  65. //cin >> t;
  66. while (t--)
  67. solve();
  68. return 0;
  69. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
empty set
C 
B 
B C 
A 
A C 
A B 
A B C