| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
提交10次了还是WrongAnswer,请各位大侠指正!!!#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
#define N 0
#define W 1
#define S 2
#define E 3
#define F 0
#define L 1
#define R 2
int main(int argc, char *argv[])
{
int i,j,k,m=0,k0,k1,k2,m0,m1,m2,m3,flag;
int test,*length,*width;
int *number,*instr,(*pos)[100][4],(*action)[100][3],(*temp)[100][100];
char s1,s2;
cin>>test;
length=new int[test];width=new int[test];
number=new int[test];instr=new int[test];pos=new int[test][100][4];
action=new int[test][100][3];temp=new int[test][100][100];
for(m=0;m<test;m++){
cin>>length[m]>>width[m];
cin>>number[m]>>instr[m];
for(i=1;i<=length[m];i++)
for(j=1;j<=width[m];j++)
temp[m][i][j]=0;
for(i=1;i<=number[m];i++){
cin>>pos[m][i][0]>>pos[m][i][1]>>s1;
temp[m][pos[m][i][0]][pos[m][i][1]]=i;
pos[m][i][3]=i;
if(s1=='N') pos[m][i][2]=N;
else if(s1=='S') pos[m][i][2]=S;
else if(s1=='W') pos[m][i][2]=W;
else if(s1=='E') pos[m][i][2]=E;
}
for(j=1;j<=instr[m];j++){
cin>>action[m][j][0]>>s2>>action[m][j][2];
if(s2=='L') action[m][j][1]=L;
else if(s2=='R') action[m][j][1]=R;
else if(s2=='F') action[m][j][1]=F;
}
}
for(m=0;m<test;m++){
for(i=1;i<=instr[m];i++){
flag=2;
k0=action[m][i][0];k1=action[m][i][1];k2=action[m][i][2];
m0=pos[m][k0][0];m1=pos[m][k0][1];m2=pos[m][k0][2];
temp[m][m0][m1]=0;
if(k1==L){
switch(k2%4){
case 0: break;
case 1: pos[m][k0][2]=(m2+1)%4;break;
case 2: pos[m][k0][2]=(m2+2)%4;break;
case 3: pos[m][k0][2]=(m2+3)%4;break;
}
}
else if(k1==R){
switch(k2%4){
case 0: break;
case 1: pos[m][k0][2]=(m2+3)%4;break;
case 2: pos[m][k0][2]=(m2+2)%4;break;
case 3: pos[m][k0][2]=(m2+1)%4;break;
}
}
else if(k1==F){
switch(m2){
case N:
for(k=0;k<k2;k++){
m1++;
if(m1>width[m]){ flag=1;break;}
else if(temp[m][m0][m1]!=0){ flag=0;break;}
pos[m][k0][1]=m1;
}
break;
case W:
for(k=0;k<k2;k++){
m0--;
if(m0<1){ flag=1;break;}
else if(temp[m][m0][m1]!=0){ flag=0;break;}
pos[m][k0][0]=m0;
}
break;
case S:
for(k=0;k<k2;k++){
m1--;
if(m1<1){ flag=1;break;}
else if(temp[m][m0][m1]!=0){ flag=0;break;}
pos[m][k0][1]=m1;
}
break;
case E:
for(k=0;k<k2;k++){
m0++;
if(m0>length[m]){ flag=1;break;}
else if(temp[m][m0][m1]!=0){ flag=0;break;}
pos[m][k0][0]=m0;
}
break;
}
}
if(flag==2) {
temp[m][m0][m1]=k0;
}
else if(flag==1){
cout<<"Robot "<<k0<<" crashes into the wall"<<endl;
break;
}
else if(flag==0){
for(k=1;k<number[m];k++)
if((pos[m][k][0]==m0)&&(pos[m][k][1]==m1))
break;
cout<<"Robot "<<k0<<" crashes into robot "
<<pos[m][k][3]<<endl;
break;
}
}
if((flag>1)&&(i>instr[m]))
cout<<"OK"<<endl;
}
delete[] length;delete[] width;delete[] number;delete[] instr;
delete[] pos[100][4];delete[] action[100][3];delete[] temp[100][100];
system("PAUSE");
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator