zoukankan      html  css  js  c++  java
  • POJ 2632 Crashing Robots(较为繁琐的模拟)

    题目链接:http://poj.org/problem?id=2632

    题目大意:题意简单,N个机器人在一个A*B的网格上运动,告诉你机器人的起始位置和对它的具体操作,输出结果:

    1.Robot i crashes into the wall, if robot i crashes into a wall. (A robot crashes into a wall if Xi = 0, Xi = A + 1, Yi = 0 or Yi = B + 1.) 撞墙

    2.Robot i crashes into robot j, if robots i and j crash, and i is the moving robot. 两个机器人相撞

    3.OK, if no crashing occurs.没有发生任何碰撞

    思路:模拟模拟~~

    用一个结构体变量记录每个robet的信息。。具体看代码吧:

      1 #include<iostream>
      2 #include<fstream>
      3 using namespace std;
      4 struct node
      5 {
      6     int id;
      7     int x;//机器人的坐标
      8     int y;
      9     char ch;//机器人的方向
     10 }robet[102];
     11 int main()
     12 {
     13     int T;
     14     scanf("%d",&T);
     15     while(T--)
     16     {
     17         int X,Y;
     18         cin>>X>>Y;
     19         int numrobet,times;
     20         cin>>numrobet>>times;
     21         int i;
     22         for(i=1; i<=numrobet; i++)
     23         {
     24             robet[i].id=i;
     25             cin>>robet[i].x>>robet[i].y>>robet[i].ch;//机器人的初始位置及朝向
     26         }
     27         int id,step,j,tage=0,k,r;
     28         char direction;
     29         for(i=1;i<=times;i++)
     30         {
     31             cin>>id>>direction>>step;//编号为id的机器人的操作和重复操作的次数
     32             for(j=1;j<=numrobet;j++)
     33             {
     34                 if(robet[j].id==id)
     35                 {
     36                     for(k=0;k<step;k++)
     37                     {
     38                         if(tage==1)
     39                             break;
     40                         else if(tage==0)//机器人的位置和方向的改变
     41                         {
     42                             if(robet[j].ch=='N')//如果机器人一开始朝北
     43                             {
     44                                 if(direction=='F')//操作“F”,向北进一
     45                                     robet[j].y+=1;
     46                                 else if(direction=='L')//操作“L”,向左转
     47                                     robet[j].ch='W';
     48                                 else if(direction=='R')//操作“R”,向右转
     49                                     robet[j].ch='E';
     50                             }
     51                             else if(robet[j].ch=='E')
     52                             {
     53                                 if(direction=='F')
     54                                     robet[j].x+=1;
     55                                 else if(direction=='L')
     56                                     robet[j].ch='N';
     57                                 else if(direction=='R')
     58                                     robet[j].ch='S';
     59                             }
     60                             else if(robet[j].ch=='W')
     61                             {
     62                                 if(direction=='F')
     63                                     robet[j].x-=1;
     64                                 else if(direction=='L')
     65                                     robet[j].ch='S';
     66                                 else if(direction=='R')
     67                                     robet[j].ch='N';
     68                             }
     69                             else if(robet[j].ch=='S')
     70                             {
     71                                 if(direction=='F')
     72                                     robet[j].y-=1;
     73                                 else if(direction=='L')
     74                                     robet[j].ch='E';
     75                                 else if(direction=='R')
     76                                     robet[j].ch='W';
     77                             }
     78                         }
     79                         if(robet[id].x<=0||robet[id].y<=0||robet[id].x>X||robet[id].y>Y)
     80                         {
     81                             cout<<"Robot "<<id<<" crashes into the wall"<<endl;
     82                             tage=1;
     83                             break;
     84                         }//判断撞墙
     85                         else
     86                         {
     87                             for(r=1; r<=numrobet; r++)
     88                             {
     89                                 if(robet[r].x==robet[id].x&&robet[r].y==robet[id].y&&r!=id)
     90                                 {
     91                                     cout<<"Robot "<<id<<" crashes into robot "<<r<<endl;
     92                                     tage=1;
     93                                 }
     94                             }
     95                             if(tage==1)
     96                                 break;
     97                         }//判断两个机器人相撞
     98                     }
     99                 }
    100             }
    101         }
    102         if(tage==0)
    103             cout<<"OK"<<endl;
    104     }
    105     return 0;
    106 }
  • 相关阅读:
    SQL多表合并查询结果
    无法访问请求的页面,因为该页的数据的相关配置数据无效
    网站运行的时候编译成功但是程序浏览器的页面不会显示怎么回事啊
    EasyUI 在textbox里面输入数据敲回车后查询和普通在textbox输入数据敲回车的区别
    搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇
    Python开发工具安装
    jQuery 插件写法2
    jQuery插件面向对象开发
    Jquery插件学习
    Maven 仓库
  • 原文地址:https://www.cnblogs.com/PJQOOO/p/3984648.html
Copyright © 2011-2022 走看看