CCCPaste

Untitled

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

class ChessMaze
{
  public:

    int traverseMaze( vector maze )
    {
    int n=maze.size();
    int m=maze[0].size();
        cout << n << " " << m << endl;
    int mat[n][m];

    int si=0;
    int sj=0;

    int ei=0;
    int ej=0;

    int c=0;

    bool visited[n][m][1 << 11][15];
    for(int i=0; iq;
   q.push(si);
   q.push(sj);
   q.push(0);/// powerups
   q.push(0);
   q.push(0);
        visited[si][sj][0][0] = true;
   while(!q.empty()){
    int ci=q.front();
    q.pop();
    int cj=q.front();
    q.pop();
    int bitmask=q.front();
    q.pop();
    int mozni=q.front();
    q.pop();
    int cekori=q.front();
    q.pop();

    if(ci == ei and cj == ej){
        return cekori;
    }
    for(int i=0; i<4; i++){
    int ti=ci+di[i];
    int tj=cj+dj[i];
    if((ti>=0)and(ti=0)and(tj0){
            for(int i=0; i<8; i++){
            int ti=ci+ki[i];
            int tj=cj+kj[i];
            if((ti>=0)and(ti=0)and(tj *maze;
/***************************Test 1 ********************************/

if(Test_No==0 || Test_No==1){
    string ABC0[]= {"*........**K*.",".****....****.","*.***.**S.K*..","***..***.*....","E..*...***...*","**...**..*..*K",".*..*.*...*...","..*.*.*.......","......*.*.....",".*..***.***..*",".**.**.***.**.","*.*......**.*.","**.*....*...**"};

maze= new vector (&ABC0[0],&ABC0[13]);
res = tmp.traverseMaze(*maze);
if(res == 14) cout<<"test #"<<1<<" Correct!\n\n";
  else {cout<<"test #"<<1<<" Wrong!\n";
cout<<"Expected: "<<14<<"\n";
cout<<"Recieved: "<< res <<" \n\n";}
cout<<"---------------------------------------------"<<"\n";

}
/******************************************************************/


/***************************Test 2 ********************************/

if(Test_No==0 || Test_No==2){
string ABC1[]={".SE","KKK"};
maze= new vector (&ABC1[0],&ABC1[2]);
res = tmp.traverseMaze(*maze);
if(res == 1) cout<<"test #"<<2<<" Correct!\n\n";
  else {cout<<"test #"<<2<<" Wrong!\n";
cout<<"Expected: "<<1<<"\n";
cout<<"Recieved: "<< res <<" \n\n";}
cout<<"---------------------------------------------"<<"\n";

}
/******************************************************************/


/***************************Test 3 ********************************/

if(Test_No==0 || Test_No==3){
string ABC2[]={"K.",".S","..",".*","*E"};
maze= new vector (&ABC2[0],&ABC2[5]);
res = tmp.traverseMaze(*maze);
if(res == 5) cout<<"test #"<<3<<" Correct!\n\n";
  else {cout<<"test #"<<3<<" Wrong!\n";
cout<<"Expected: "<<5<<"\n";
cout<<"Recieved: "<< res <<" \n\n";}
cout<<"---------------------------------------------"<<"\n";

}
/******************************************************************/


/***************************Test 4 ********************************/

if(Test_No==0 || Test_No==4){
string ABC3[]={"..*E","K*SK"};
maze= new vector (&ABC3[0],&ABC3[2]);
res = tmp.traverseMaze(*maze);
if(res == 2) cout<<"test #"<<4<<" Correct!\n\n";
  else {cout<<"test #"<<4<<" Wrong!\n";
cout<<"Expected: "<<2<<"\n";
cout<<"Recieved: "<< res <<" \n\n";}
cout<<"---------------------------------------------"<<"\n";

}
/******************************************************************/


/***************************Test 5 ********************************/

if(Test_No==0 || Test_No==5){
string ABC4[]={".E.KK","*K.S*"};
maze= new vector (&ABC4[0],&ABC4[2]);
res = tmp.traverseMaze(*maze);
if(res == 3) cout<<"test #"<<5<<" Correct!\n\n";
  else {cout<<"test #"<<5<<" Wrong!\n";
cout<<"Expected: "<<3<<"\n";
cout<<"Recieved: "<< res <<" \n\n";}
cout<<"---------------------------------------------"<<"\n";

}
/******************************************************************/


/***************************Test 6 ********************************/

if(Test_No==0 || Test_No==6){
string ABC5[]={"*E.**","*..SK","****.","..***"};
maze= new vector (&ABC5[0],&ABC5[4]);
res = tmp.traverseMaze(*maze);
if(res == 3) cout<<"test #"<<6<<" Correct!\n\n";
  else {cout<<"test #"<<6<<" Wrong!\n";
cout<<"Expected: "<<3<<"\n";
cout<<"Recieved: "<< res <<" \n\n";}
cout<<"---------------------------------------------"<<"\n";

}
/******************************************************************/


/***************************Test 7 ********************************/

if(Test_No==0 || Test_No==7){
string ABC6[]={".*","EK",".K","S."};
maze= new vector (&ABC6[0],&ABC6[4]);
res = tmp.traverseMaze(*maze);
if(res == 2) cout<<"test #"<<7<<" Correct!\n\n";
  else {cout<<"test #"<<7<<" Wrong!\n";
cout<<"Expected: "<<2<<"\n";
cout<<"Recieved: "<< res <<" \n\n";}
cout<<"---------------------------------------------"<<"\n";

}
/******************************************************************/


/***************************Test 8 ********************************/

if(Test_No==0 || Test_No==8){
string ABC7[]={".*.",".**","ES.","...",".KK"};
maze= new vector (&ABC7[0],&ABC7[5]);
res = tmp.traverseMaze(*maze);
if(res == 1) cout<<"test #"<<8<<" Correct!\n\n";
  else {cout<<"test #"<<8<<" Wrong!\n";
cout<<"Expected: "<<1<<"\n";
cout<<"Recieved: "<< res <<" \n\n";}
cout<<"---------------------------------------------"<<"\n";

}
/******************************************************************/


/***************************Test 9 ********************************/

if(Test_No==0 || Test_No==9){
string ABC8[]={"...*.","..***","...K*","S*E**"};
maze= new vector (&ABC8[0],&ABC8[4]);
res = tmp.traverseMaze(*maze);
if(res == 4) cout<<"test #"<<9<<" Correct!\n\n";
  else {cout<<"test #"<<9<<" Wrong!\n";
cout<<"Expected: "<<4<<"\n";
cout<<"Recieved: "<< res <<" \n\n";}
cout<<"---------------------------------------------"<<"\n";

}
/******************************************************************/


/***************************Test 10 ********************************/

if(Test_No==0 || Test_No==10){
string ABC9[]={".*..","*.K.","KS.*","*KE*"};
maze= new vector (&ABC9[0],&ABC9[4]);
res = tmp.traverseMaze(*maze);
if(res == 2) cout<<"test #"<<10<<" Correct!\n\n";
  else {cout<<"test #"<<10<<" Wrong!\n";
cout<<"Expected: "<<2<<"\n";
cout<<"Recieved: "<< res <<" \n\n";}
cout<<"---------------------------------------------"<<"\n";

}
/******************************************************************/


  return 0;

}