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

[poj]poj2632(模拟)

时间:2019-03-12 18:31:23      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:open   lap   ios   src   mes   图片   int   oid   space   

题意:模拟

模拟就行

技术图片
#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\n",num);
                        flag=1;
                        break;
                    }
                    else {
                        printf("Robot %d crashes into robot %d\n",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\n");
    } 
    
} 
View Code

 

[poj]poj2632(模拟)

标签:open   lap   ios   src   mes   图片   int   oid   space   

原文地址:https://www.cnblogs.com/xutianshu/p/10518303.html

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