poj 2632

题意:一个房间由m*n个方块组成  每个机器人占据一个方块  这些机器人能够移动  问 这些机器人的移动动作全部完成后
会不会发生冲撞事件

解题策略:简单的模拟题目


#include<iostream>
#include<cstring>
using namespace std;
struct Node
{
int x,y;
int dir;
}p[10000],map[111][111];
int dir[4][2]={1,0,-1,0,0,-1,0,1};
int main()
{
char c;
int t,x,y;
int m,n,i;
int sum,instu;
bool ok;
cin>>t;
while(t--)
{
cin>>m>>n;
memset(map,0,sizeof(map));
cin>>sum>>instu;
for(i=1;i<=sum;i++)
{
cin>>x>>y>>c;
switch(c)
{
case ‘N‘:p[i].x=x;p[i].y=y;p[i].dir=1;break;
case ‘S‘:p[i].x=x;p[i].y=y;p[i].dir=2;break;
case ‘W‘:p[i].x=x;p[i].y=y;p[i].dir=3;break;
case ‘E‘:p[i].x=x;p[i].y=y;p[i].dir=4;break;
}
map[x][y].dir=i;
}
ok=false;
while(instu--)
{
cin>>x>>c>>y;
if(ok) continue;
if(c==‘L‘)
{
for(i=1;i<=y;i++)
{

if(p[x].dir==1) p[x].dir=3;
else if(p[x].dir==2) p[x].dir=4;
else if(p[x].dir==3) p[x].dir=2;
else p[x].dir=1;
}
}
if(c==‘R‘)
{
for(i=1;i<=y;i++)
{
if(p[x].dir==1) p[x].dir=4;
else if(p[x].dir==2) p[x].dir=3;
else if(p[x].dir==3) p[x].dir=1;
else p[x].dir=2;
}
}
if(c==‘F‘)
{
for(i=1;i<=y;i++)
{
map[p[x].x][p[x].y].dir=0;
p[x].y+=dir[p[x].dir-1][0];
p[x].x+=dir[p[x].dir-1][1];
if(map[p[x].x][p[x].y].dir)
{
cout<<"Robot "<<x<<" crashes into robot "<<map[p[x].x][p[x].y].dir<<endl;
break;
}
if(p[x].x>m||p[x].x<=0||p[x].y>n||p[x].y<=0)
{
cout<<"Robot "<<x<<" crashes into the wall"<<endl;
break;
}
map[p[x].x][p[x].y].dir=x;
}
if(i<=y) ok=true;
}
}
if(!ok)
cout<<"OK"<<endl;
}
return 0;
}

poj 2632,布布扣,bubuko.com

时间: 2024-12-23 07:41:57

poj 2632的相关文章

poj 2632 Crashing Robots, 模拟

点击打开链接 简单 模拟机器人的移动,发生碰撞时输出相应的信息. code #include <cstdio> #include <cstring> using namespace std; struct node{ int k; int s; } mtx[200][200]; struct node1{ int x, y; } rob[200]; int n, m; int dir[4][2]= {{0,1},{1,0},{0,-1},{-1,0}}; //N, E, S, W

poj 2632 Crashing Robots(模拟)

链接:poj 2632 题意:在n*m的房间有num个机器,它们的坐标和方向已知,现给定一些指令及机器k执行的次数, L代表机器方向向左旋转90°,R代表机器方向向右旋转90°,F表示前进,每次前进一米 若前进时机器i撞到机器j,输出"Robot i crashes into robot j " 若机器走出了n*m的房间,输出"Robot i crashes into the wall " 当出现上述情况,只需输出第一次出现上述的情况 若所有指令执行完,所有机器都没

poj -2632 Crashing Robots

http://poj.org/problem?id=2632 Crashing Robots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7470   Accepted: 3265 Description In a modernized warehouse, robots are used to fetch the goods. Careful planning is needed to ensure that the

POJ 1573 &amp; POJ 2632(两道有趣的Robot)

题目链接:POJ 1573 Robot Motion & POJ 2632 Crashing Robots [题意]题意就不说了,有兴趣从链接点进去看吧,就是机器人各种打扫房间,行驶指令. [思路]2632是一道纯模拟题,只要把题意读懂,就可以用代码模拟过程,只是写起来有点蛋疼,代码力还是欠缺啊.而1573感觉挺新奇的,我用的DFS来模拟,好久没有写DFS,一开始又把dir数组写错了,结果总是得出0. 下面贴代码,先是2632的AC代码: 1 /* 2 ** POJ 2632 Crashing

POJ 2632 Crashing Robots (模拟 坐标调整)(fflush导致RE)

题目链接:http://poj.org/problem?id=2632 先话说昨天顺利1Y之后,直到今天下午才再出题 TAT,真是刷题计划深似海,从此AC是路人- - 本来2632是道稍微恶心点的模拟,但毕竟是模拟,一般模拟都是只要示例过了基本就AC了,但这个题很特殊 我开始的时候一直跑不出测试示例,才发现题目中的插图和我构想的坐标系是不一样的(看来还不能轻易忽视掉插图啊) 这个题给出的坐标系是纵轴为y,横轴为x,y从下到上依次递增,x轴是从左到右递增 而我用的二维数组记录的地图,也就是说我的纵

POJ 2632 Crashing Robots(较为繁琐的模拟)

题目链接:http://poj.org/problem?id=2632 题目大意:题意简单,N个机器人在一个A*B的网格上运动,告诉你机器人的起始位置和对它的具体操作,输出结果: 1.Robot i crashes into the wall, if robot i crashes into a wall. (A robot crashes into a wall if Xi = 0, Xi = A + 1, Yi = 0 or Yi = B + 1.) 撞墙 2.Robot i crashes

POJ 2632 Crashing Robots(模拟题)

Crashing Robots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7880   Accepted: 3429 Description In a modernized warehouse, robots are used to fetch the goods. Careful planning is needed to ensure that the robots reach their destination

Crashing Robots - poj 2632

Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8352   Accepted: 3613 Description In a modernized warehouse, robots are used to fetch the goods. Careful planning is needed to ensure that the robots reach their destinations without crashi

POJ 2632:Crashing Robots

Crashing Robots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8424   Accepted: 3648 Description In a modernized warehouse, robots are used to fetch the goods. Careful planning is needed to ensure that the robots reach their destination