zoukankan      html  css  js  c++  java
  • 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;
    }
    
    
    
    
    
    
    
     
  • 相关阅读:
    markdown语法
    基于Vue 使用threejs导入gltf动画模型
    创建Vue项目
    一个简单的特效
    网页五--html插入表格
    网页四--按钮反应
    网页三
    简单的页面
    一个能实现超链接的最简单程序
    计算机基本配置和作用
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3755800.html
Copyright © 2011-2022 走看看