zoukankan      html  css  js  c++  java
  • [POJ]poj2632(模拟)

    题意:模拟

    模拟就行

    #include<iostream>
    #include<cstdio>
    #include<stack>
    
    using namespace std;
    
    const int N=1e2+7;
    
    struct robot{
        int id,x,y,to;
    };
    
    const int dx[4]={0,1,0,-1};
    const int dy[4]={1,0,-1,0};
    
    int T,n,m,A,B,flag;
    
    int map[N][N];
    
    robot rbt[N];
    
    void init(){
        for(int i=0;i<=B+1;i++)map[0][i]=map[A+1][i]=0;
        for(int i=0;i<=A+1;i++)map[i][0]=map[i][B+1]=0;
        for(int i=1;i<=n;i++)map[rbt[i].x][rbt[i].y]=0;
        flag=0;
        
        cin>>A>>B>>n>>m;
        
        for(int i=0;i<=B+1;i++)map[0][i]=map[A+1][i]=n+1;
        for(int i=0;i<=A+1;i++)map[i][0]=map[i][B+1]=n+1;
        for(int i=1;i<=n;i++){
            char f[3];
            cin>>rbt[i].x>>rbt[i].y>>f;
            if(f[0]=='N')rbt[i].to=0;
            if(f[0]=='E')rbt[i].to=1;
            if(f[0]=='S')rbt[i].to=2;
            if(f[0]=='W')rbt[i].to=3;
            map[rbt[i].x][rbt[i].y]=i;
        }
    }
    
    int main(){
        cin>>T;
        while(T--){
             
            init();
             
            for(int i=1;i<=m;i++){
                int num,rep;
                char f[3];
                cin>>num>>f>>rep;
                if(flag)continue;
                
                if(f[0]=='R'){
                    rbt[num].to=(rbt[num].to+rep)%4;
                }
                
                if(f[0]=='L'){
                    rbt[num].to=(rbt[num].to-rep+4000)%4;
                }
                
                if(f[0]=='F'){
                    for(int i=1;i<=rep;i++){
                    
                    int nx=dx[rbt[num].to]+rbt[num].x;
                    int ny=dy[rbt[num].to]+rbt[num].y;
                    if(map[nx][ny]){
                        if(map[nx][ny]==n+1){
                            printf("Robot %d crashes into the wall
    ",num);
                            flag=1;
                            break;
                        }
                        else {
                            printf("Robot %d crashes into robot %d
    ",num,map[nx][ny]);
                            flag=1;
                            break;
                        }
                    }
                    else {
                        map[rbt[num].x][rbt[num].y]=0;
                        map[nx][ny]=num;
                        rbt[num].x=nx;
                        rbt[num].y=ny;
                    }
                    }
                }
            }
            if(!flag)printf("OK
    ");
        } 
        
    }
  • 相关阅读:
    Jquery 判断值是否存在于数组之内
    Linux 拷贝有更改的文件
    Thinkphp [美味]常用代码
    Oracle基础知识:DECODE、NVL
    安装配置svn
    搭建LAMP环境以及shell脚本搭建(yum安装)
    Jmeter接口测试webservice
    Jmeter插件安装和使用
    Jmeter中java接口测试
    Jmeter中聚合报告吞吐量的计算
  • 原文地址:https://www.cnblogs.com/xutianshu/p/10518303.html
Copyright © 2011-2022 走看看