Advertisement
Guest User

Backtracking

a guest
Dec 20th, 2014
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. typedef vector<int> VI;
  7. typedef vector<string> VS;
  8. typedef vector<VS> VVS;
  9.  
  10. int n, p;
  11. VS ps;
  12. VVS parts;
  13. VI is;
  14.  
  15. void print() {
  16.   for (int i = 0; i < p; ++i) {
  17.     cout << "subconjunt " << i+1 << ": {";
  18.     fo r(int j = 0; j < is[i]; ++j) {
  19.       if (j) cout << ',';
  20.       cout << parts[i][j];
  21.     }
  22.     cout << "}" << endl;
  23.   }
  24.   cout << endl;
  25. }
  26.  
  27. void bt(int k) {
  28.   if (k == n) return print();
  29.   for (int i = 0; i < p; ++i) {
  30.     parts[i][is[i]++] = ps[k];
  31.     bt(k+1); --is[i];
  32.   }
  33. }
  34.  
  35. int main() {
  36.   cin >> n;
  37.   ps = VS(n);
  38.   for (int i = 0; i < n; ++i) cin >> ps[i];
  39.   cin >> p;
  40.   parts = VVS(p, VS(n));
  41.   is = VI(p, 0);
  42.   bt(0);
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement