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;
}
#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;
}
相关文章推荐
- poj 2632 Crashing Robots 模拟题 测试数据+AC代码
- POJ 2632 Crashing Robots (坑爹的模拟题)
- POJ2632 Crashing Robots(模拟)
- poj 2632 Crashing Robots
- Poj OpenJudge 百练 2632 Crashing Robots
- POJ 2632 Crashing Robots
- poj 2632 Crashing Robots
- POJ2632 Crashing Robots(模拟)
- POJ 2632-Crashing Robots
- POJ 2632, Crashing Robots
- poj2632--Crashing Robots
- poj 2632 Crashing Robots
- Crashing Robots POJ 2632
- poj 2632 Crashing Robots
- POJ 2632 Crashing Robots 笔记
- poj 2632 Crashing Robots, 模拟
- POJ 2632 Crashing Robots 模拟
- POJ 2632 Crashing Robots
- POJ 2632 Crashing Robots 水模拟
- POJ 2632 Crashing Robots