| ||||||||||
| 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 | |||||||||
我很菜,不知道怎么看runtime error,求路过的大牛,小牛指教#include<iostream>
#define max 1000
using namespace std;
int m,n;
struct node
{
int x;
int y;
int dir[2];
char ch;
}s[max];
struct com
{
int r;
int di;
int re;
}t[max];
int visit[max][max];
void chao( char c, int &x,int &y)
{
switch(c)
{
case 'E':
{ x=1;y =0;}break;
case 'W':
{x=-1,y=0;}break;
case 'N':
{x=0;y=1;}break;
case 'S':
{x=0,y=-1;}break;
}
}
void change( char c,char d ,int n,int &x,int &y)//char c 原来 //char d 转
{
int k=0;
if(d=='L')
{
if(c=='E') k=0;
if(c=='W')k=2;
if(c=='S')k=3;
if(c=='N') k=1;
int a[4][2]={{1,0}, {0,1},{-1,0},{0,-1}};
x= a[(k+n)%4][0];
y= a[(k+n)%4][1];
}
else
{
if(c=='E') k=0;
if(c=='W')k=2;
if(c=='S')k=1;
if(c=='N') k=3;
int b[4][2]={{1,0}, {0,-1},{-1,0},{0,1}};
x= b[(k+n)%4][0];
y= b[(k+n)%4][1];
}
}
int right(int x,int y)
{
if(x<=0||x>m||y<=0||y>n)
return 1;
else
{
if(visit[x][y]!=0)
return 2;
else
return 0;
}
}
int main()
{
int i,comman,num,j;
int ro1,ro2,ro3;
int test;
freopen("in.txt","r",stdin);
scanf("%d",&test);
while(test--)
{
scanf("%d%d",&m,&n);
scanf("%d%d",&num,&comman);
memset(visit,0,sizeof(visit));
for(i=1;i<=num;i++)
{
scanf("%d%d %c",&s[i].x,&s[i].y,&s[i].ch);
getchar();
visit[s[i].x][s[i].y]=i;
chao(s[i].ch,s[i].dir[0],s[i].dir[1]);
//cout<<s[i].dir[0]<<" "<<s[i].dir[1]<<endl;
}
int sign=0;
for(i=0;i<comman;i++)
{
scanf("%d %c%d",&t[i].r,&t[i].di,&t[i].re);
if(sign==0)
{
if(t[i].di!='F')
{
change(s[t[i].r].ch,t[i].di,t[i].re%4, s[t[i].r].dir[0], s[t[i].r].dir[1]);
if( s[t[i].r].dir[0]==0&&s[t[i].r].dir[1]==-1)
s[t[i].r].ch='S';
if( s[t[i].r].dir[0]==1&&s[t[i].r].dir[1]==0)
s[t[i].r].ch='E';
if( s[t[i].r].dir[0]==-1&&s[t[i].r].dir[1]==0)
s[t[i].r].ch='W';
if( s[t[i].r].dir[0]==0&&s[t[i].r].dir[1]==1)
s[t[i].r].ch='N';
// cout<<"change"<<" "<<s[t[i].r].ch<<endl;
}
else
{
for(j=0;j<t[i].re;j++)
{
if(sign==0)
{
visit[s[t[i].r].x][s[t[i].r].y]=0;
s[t[i].r].x+=s[t[i].r].dir[0];
s[t[i].r].y+=s[t[i].r].dir[1];
// cout<<"dir"<<s[t[i].r].dir[0]<<" "<<s[t[i].r].dir[1]<<endl;
// cout<<"robot and pos"<<endl;
// cout<<t[i].r<<" "<<s[t[i].r].x<<" "<<s[t[i].r].y<<endl;
sign=right(s[t[i].r].x,s[t[i].r].y);
if(sign ==1)
ro1=t[i].r;
if(sign==2)
{
ro2=t[i].r;
ro3=visit[s[t[i].r].x][s[t[i].r].y];
}
if(sign==0)
visit[s[t[i].r].x][s[t[i].r].y]=t[i].r;
}
}
}
}
}
if(sign==1)printf("Robot %d crashes into the wall\n",ro1);
if(sign==2) printf("Robot %d crashes into robot %d\n",ro2,ro3);
if(sign==0) printf("OK\n");
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator