Advertisement
Ritam_C

Tower of Hanoi

Apr 15th, 2021
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. void tower(int N, int m, int n, vector<pair<int, int>>& v){
  2.     if(N == 1){
  3.         v.push_back({m, n});
  4.     } else{
  5.         if(m == 1 && n == 2){
  6.             tower(N-1, 1, 3, v);
  7.             v.push_back({m, n});
  8.             tower(N-1, 3 ,2, v);
  9.         } else if(m == 3 && n == 2){
  10.             tower(N-1, 3, 1, v);
  11.             v.push_back({m, n});
  12.             tower(N-1, 1, 2, v);
  13.         } else if(m == 3 && n == 1){
  14.             tower(N-1, 3, 2, v);
  15.             v.push_back({m, n});
  16.             tower(N-1, 2, 1, v);
  17.         } else if(m == 2 && n == 1){
  18.             tower(N-1, 2, 3, v);
  19.             v.push_back({m, n});
  20.             tower(N-1, 3, 1, v);
  21.         } else if(m == 2 && n == 3){
  22.             tower(N-1, 2, 1, v);
  23.             v.push_back({m, n});
  24.             tower(N-1, 1, 3, v);
  25.         } else{
  26.             tower(N-1, 1, 2, v);
  27.             v.push_back({m, n});
  28.             tower(N-1, 2, 3, v);
  29.         }
  30.     }
  31. }
  32.  
  33. vector<int> shiftPile(int N, int n){
  34.     vector<pair<int,int>> v;
  35.     vector<int> p;
  36.     tower(N, 1, 3, v);
  37.     p.push_back(v[n-1].first);
  38.     p.push_back(v[n-1].second);
  39.     return p;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement