Guest User

Untitled

a guest
Nov 17th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.41 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <queue>
  4. #define MAXN 10000
  5. #include <vector>
  6. string change(string input; int arg){
  7.     int i,a,b;
  8.     if(arg==0){
  9.         if(input[0]!=9)
  10.             input[0]++;
  11.         return input;
  12.     }
  13.     if(arg==1){
  14.         if(input[3]!=0)
  15.             input[3]--;
  16.         return input;
  17.     }
  18.     if(arg=2){
  19.         a=input[0];
  20.         for(i=0;i<4;i++){
  21.             if(i=3)
  22.                 input[i]=a;
  23.             input[i]=input[i+1];
  24.         }
  25.     }
  26.     if(arg=3){
  27.         a=input[3];
  28.         for(i=3;i>-1;i--){
  29.             if(i=0)
  30.                 input[i]=a;
  31.             input[i]=input[i-1];
  32.         }
  33.     }
  34. }
  35. struct numb{string name; string previous;};
  36. bool used[MAXN];
  37. vector bfs (numb start;numb finish){
  38.     int prev[MAXN]
  39.     queue<numb> q;
  40.     vector res;
  41.     q.push(start);
  42.     used[start]=true;
  43.     numb cur;
  44.     int j=0;
  45.     cur=start;
  46.     prev[cur.name]=start
  47.     res.push_back(finish);
  48.     while(!q.empty()){
  49.         for(int i=0;i<4;i++){
  50.             if(used[change(cur.name,i)]==false){
  51.                 cur.previous=cur.name;
  52.                 cur.name=change(cur.name,i);
  53.                 prev[cur.name]=cur.previous;
  54.                 q.push(cur);
  55.                 used[cur.name]=true;
  56.                     if(cur.name==finish){
  57.                         j=1;
  58.                     }
  59.             }
  60.         }
  61.         if(j=0){
  62.             cur=q.front();
  63.             q.pop();
  64.         }
  65.         else{
  66.             while(cur.name!=start.name){
  67.                 res.push_back(prev[cur.name]);
  68.                 cur.name=prev[cur.name];
  69.             }
  70.             return res;
  71.         }
  72.            
  73.     }
  74. }
  75. int main(){
  76.     numb start, finish;
  77.     vector res;
  78.     cin>>start.name; finish.name;
  79.     res=bfs(start; finish);
  80.     for(inti=res.size-1;i>=0;i--){
  81.         cout<< res[i];
  82.     }
  83.     return 0;
  84. }
Add Comment
Please, Sign In to add comment