您的位置:首页 > 其它

POJ 2632 Crashing Robots

2013-08-02 12:18 309 查看
模拟题,题意好懂,不说了。我写的时候边界竟然处理错了一次,我的长方形的长和宽都是从1开始的,竟然里面不知不觉的写成了0.悲剧的wa了一次。

#include<iostream>
using namespace std;
int matrix[101][101];
struct node{
int x;
int y;
int direction;
};
node robot[101];
int main()
{
int test,chang,kuan,i,j,N,instruction,ok,bian,b;
char a;
cin>>test;
while(test--)
{
cin>>chang>>kuan;
for(j=1;j<=kuan;j++)
for(i=1;i<=chang;i++)
matrix[i][j]=0;
cin>>N>>instruction;
ok=0;
for(i=1;i<=N;i++)
{
cin>>robot[i].x>>robot[i].y>>a;
if(a=='E')
robot[i].direction=0;
else if(a=='N')
robot[i].direction=1;
else if(a=='W')
robot[i].direction=2;
else robot[i].direction=3;
matrix[robot[i].x][robot[i].y]=i;
}
for(j=1;j<=instruction;j++)
{
cin>>bian>>a>>b;
if(ok==1)
continue;

if(a=='R')
{
if(b%4==0)
;
else if(b%4==1)
robot[bian].direction=(robot[bian].direction+3)%4;
else if(b%4==2)
robot[bian].direction=(robot[bian].direction+2)%4;
else robot[bian].direction=(robot[bian].direction+1)%4;
}
if(a=='L')
{
if(b%4==0)
;
else if(b%4==1)
robot[bian].direction=(robot[bian].direction+1)%4;
else if(b%4==2)
robot[bian].direction=(robot[bian].direction+2)%4;
else robot[bian].direction=(robot[bian].direction+3)%4;
}
if(a=='F')
{
if(robot[bian].direction==0)
{
matrix[robot[bian].x][robot[bian].y]=0;
for(i=robot[bian].x+1;i<=robot[bian].x+b;i++)
{
if(matrix[i][robot[bian].y]!=0)
{
ok=1;
cout<<"Robot "<<bian<<" crashes into robot "<<matrix[i][robot[bian].y]<<endl;
break;
}
if(i>chang)
{
ok=1;
cout<<"Robot "<<bian<<" crashes into the wall"<<endl;
break;
}
}
if(ok==0)
{
matrix[robot[bian].x+b][robot[bian].y]=bian;
robot[bian].x=robot[bian].x+b;
}
}
if(robot[bian].direction==3)
{
matrix[robot[bian].x][robot[bian].y]=0;
for(i=1;i<=b;i++)
{
if(matrix[robot[bian].x][robot[bian].y-i]!=0)
{
ok=1;
cout<<"Robot "<<bian<<" crashes into robot "<<matrix[robot[bian].x][robot[bian].y-i]<<endl;
break;
}
if(robot[bian].y-i<=0)
{
ok=1;
cout<<"Robot "<<bian<<" crashes into the wall"<<endl;
break;
}
}
if(ok==0)
{
matrix[robot[bian].x][robot[bian].y-b]=bian;
robot[bian].y=robot[bian].y-b;
}
}
if(robot[bian].direction==2)
{
matrix[robot[bian].x][robot[bian].y]=0;
for(i=robot[bian].x-1;i>=robot[bian].x-b;i--)
{
if(matrix[i][robot[bian].y]!=0)
{
ok=1;
cout<<"Robot "<<bian<<" crashes into robot "<<matrix[i][robot[bian].y]<<endl;
break;
}
if(i<=0)
{
ok=1;
cout<<"Robot "<<bian<<" crashes into the wall"<<endl;
break;
}
}
if(ok==0)
{
matrix[robot[bian].x-b][robot[bian].y]=bian;
robot[bian].x=robot[bian].x-b;
}
}
if(robot[bian].direction==1)
{
matrix[robot[bian].x][robot[bian].y]=0;
for(i=1;i<=b;i++)
{
if(matrix[robot[bian].x][robot[bian].y+i]!=0)
{
ok=1;
cout<<"Robot "<<bian<<" crashes into robot "<<matrix[robot[bian].x][robot[bian].y+i]<<endl;
break;
}
if(robot[bian].y+i>kuan)
{
ok=1;
cout<<"Robot "<<bian<<" crashes into the wall"<<endl;
break;
}
}
if(ok==0)
{
matrix[robot[bian].x][robot[bian].y+b]=bian;
robot[bian].x=robot[bian].x;
robot[bian].y=robot[bian].y+b;
}
}
}
}
if(ok==0)
cout<<"OK"<<endl;
}
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: