码迷,mamicode.com
首页 > 其他好文 > 详细

poj 2632

时间:2014-06-07 06:03:49      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

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

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

bubuko.com,布布扣
#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;
}







 
bubuko.com,布布扣

 

poj 2632,布布扣,bubuko.com

poj 2632

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/zhangdashuai/p/3755800.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!