Advertisement
shamiul93

Untitled

Nov 18th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. vector<State*> make_adjacency_list (State* cs)
  2. {
  3.     vector <State*> state_list ; // adjacency list
  4.     int x, y, i, j;
  5.     //determining number of m and c on the boat side
  6.     if (cs->pos)
  7.     {
  8.         x = n-cs->m ;
  9.         y = n-cs->c;
  10.     }
  11.     else
  12.     {
  13.         x = cs->m ;
  14.         y = cs->c ;
  15.     }
  16.     //creating states
  17.     for (i = 0 ; i <= x ; i++)
  18.     {
  19.  
  20.         for (j = 0 ; j <= y ; j++)
  21.         {
  22.             if ((i+j)&&((i+j)<np))  // number of passengers : 1 to np-1
  23.             {
  24.                 // cout << "ij= " << i << j << endl ;
  25.                 if (((x-i)>0)&&((n-x+i)>0)&&((x-i>=y-j) && ((n-x+i)>=(n-y+j)))
  26.                         ||((x-i==0)&& ((n-x+i)>=(n-y+j)))||((n-x+i==0)&&((x-i>=y-j))))
  27.                     //if (number of missionaries is nonzero and maintains condition  ,
  28.                     //or number of missionaries is 0 on either side and condition
  29.                 {
  30.                     //   cout << "x-i y-j= " << x-i << y-j << endl ;
  31.                     //nodes++ ;
  32.                     State* ns = new State(cs->m+(int)pow(-1,1-cs->pos)*i, cs->c + (int)pow(-1,1-cs->pos)*j, 1-cs->pos,cs) ;
  33.                     state_list.push_back (ns) ;
  34.                     // cout << "nm nc= " <<(int)pow(-1,1-cs->pos)*i <<cs->c + pow(-1,1-cs->pos)*j << endl ;
  35.                 }
  36.             }
  37.  
  38.         }
  39.  
  40.  
  41.     }
  42.     return state_list ;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement