前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >poj 2632 Crashing Robots

poj 2632 Crashing Robots

作者头像
用户1624346
发布2018-04-17 16:06:57
6900
发布2018-04-17 16:06:57
举报
文章被收录于专栏:calmound

 http://poj.org/problem?id=2632

题意:机器人是否撞墙撞车

分析:这里不同的就是机器人每次的行为都必须判断一次,出现问题后马上退出判断

代码语言:javascript
复制
#include<stdio.h>
const int MAXN=110;

struct Node
{
    int row,col;
    int drec;
    int flag;//-1撞墙,0存活,-2
} node[MAXN];

int main()
{
    int judge;
    int i,j,T,A,B,m,n,k;
    int rep,drec,rob;
    char act;
    scanf("%d",&T);
    while(T--)
    {
        judge=0;
        scanf("%d%d",&A,&B);//A列 B行
        scanf("%d%d",&n,&m);
        for(i=1; i<=n; i++)
        {
            scanf("%d%d",&node[i].col,&node[i].row);
            getchar();
            scanf("%c",&node[i].drec);
            node[i].flag=0;
            if(node[i].drec=='N') node[i].drec=0;
            if(node[i].drec=='W') node[i].drec=1;
            if(node[i].drec=='S') node[i].drec=2;
            if(node[i].drec=='E') node[i].drec=3;
        }
        for(i=0; i<m; i++)
        {
            scanf("%d",&rob);
            getchar();
            scanf("%c%d",&act,&rep);
            if(judge==1) continue;
            if(act=='F')
            {
                for(j=1; j<=rep; j++)
                {
                    if(judge==1) break;
                    if(node[rob].drec==0) node[rob].row++;
                    if(node[rob].drec==1) node[rob].col--;
                    if(node[rob].drec==2) node[rob].row--;
                    if(node[rob].drec==3) node[rob].col++;
                    if(node[rob].row>B || node[rob].row==0 || node[rob].col>A || node[rob].col==0)
                    {
                        judge=1;
                        printf("Robot %d crashes into the wall\n",rob);
                        break;
                    }
                    for(k=1; k<=n; k++)
                    {
                        if(k==rob) continue;
                        if(node[k].row==node[rob].row && node[k].col==node[rob].col)
                        {
                            judge=1;
                            printf("Robot %d crashes into robot %d\n",rob,k);
                            break;
                        }
                    }
                }
            }
            else if(act=='L')
            {
                rep%=4;
                node[rob].drec=(node[rob].drec+rep)%4;
            }
            else
            {
                rep%=4;
                node[rob].drec=(node[rob].drec-rep+4)%4;
            }
        }
        if(judge==0) printf("OK\n");
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-02-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档