Crashing Robots

题意

  • 模拟多个机器人在四个方向的移动,检测crash robot, crash wall, OK这些状态
  • 这是个模拟题需要注意几点:
    • 理解转变方向后移动多少米,和转动方向多少次的区别,这里后一种,在于自己审题
    • crash robot 需要区别哪一个是最先找到的

      代码(自己写的比较乱)

    int move[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
    //1..A or B
    std::map<char,int> mp={{'E',0},{'N',1},{'W',2},{'S',3}};
    struct node{int x,y;int dir;
    };//record position
    int xb,yb;//x,y边界
    node pos[105];//记录当前robot 位置
    int ros,ins;//robots num and instruction nums
    bool cr(int x1,int x2,int x){return (x1<=x&&x<=x2)||(x2<=x&&x<=x1);
    }
    bool crash_robot(node b,node e,node r){if(cr(b.x,e.x,r.x)&&cr(b.y,e.y,r.y)) return true;else return false;
    }
    int check(int a, char ins,int len){//return 1 crash robot 2 crash wall 3 OK temparily//node tmp=pos[a];if(ins=='L'){pos[a].dir=(pos[a].dir+len)%4;}else if(ins=='R'){pos[a].dir=(pos[a].dir-len+400)%4;}//else if(ins=='F'){tmp.x=pos[a].x+move[pos[a].dir][0]*len;tmp.y=pos[a].y+move[pos[a].dir][1]*len;tmp.dir=pos[a].dir;int near_rob=-1;for(int j=1;j<=ros;j++){//需要判断谁先撞上if(j!=a){if(crash_robot(pos[a],tmp,pos[j])){if(near_rob==-1) near_rob=j;else {if(abs(pos[j].x-pos[a].x+pos[j].y-pos[a].y)<abs(pos[near_rob].x+pos[near_rob].y-pos[a].x-pos[a].y)) near_rob=j;}//printf("Robot %d crashes into robot %d\n",a,j);}}}pos[a]=tmp;if(near_rob!=-1){printf("Robot %d crashes into robot %d\n",a,near_rob);return 1;}//no crash robot//check crash wallif(tmp.x<=0||tmp.x>=xb+1||tmp.y<=0||tmp.y>=yb+1){printf("Robot %d crashes into the wall\n",a);pos[a]=tmp;return 2;}pos[a]=tmp;}return 0;
    }

转载于:https://www.cnblogs.com/fridayfang/p/9508176.html

HDU 2300 Crashing Robots相关推荐

  1. 模拟 POJ 2632 Crashing Robots

    题目地址:http://poj.org/problem?id=2632 1 /* 2 题意:几个机器人按照指示,逐个朝某个(指定)方向的直走,如果走过的路上有机器人则输出谁撞到:如果走出界了,输出谁出 ...

  2. 【POJ - 2632】Crashing Robots(模拟)

    题干: In a modernized warehouse, robots are used to fetch the goods. Careful planning is needed to ens ...

  3. 台州学院acm:Crashing Robots

    描述 In a modernized warehouse, robots are used to fetch the goods. Careful planning is needed to ensu ...

  4. HDU 6229 Wandering Robots 找规律+离散化

    题目链接:Wandering Robots 题解:先讲一下规律,对于每一个格子它可以从多少个地方来有一个值(可以从自己到自己),然后答案就是统计合法格子上的数与所有格子的数的比值 比如说样例的3 0格 ...

  5. HDU题目分类大全【大集合】

    基础题: 1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.  1032.1037.1040.1048.1056.105 ...

  6. 转载:Hdu 题目分类

    原址点击 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056. ...

  7. hdu与poj题目分类

    POJ 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(po ...

  8. hdu HDOJ 题目分类(转)

    动态规划:2037 2054 2084 hdu题目分类(转) http://apps.hi.baidu.com/share/detail/17053154 1001 整数求和 水题 1002 C语言实 ...

  9. HOJ题目分类//放这儿没事刷刷学算法!嘻嘻!

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

最新文章

  1. 计算机一级考可以用计算器吗,全国计算机一级考试题(判断题),你对电脑知识了解多少?...
  2. 高频运行脚本案例 $$
  3. 卡片的sak为不支持的类型_“师傅”两字是不能随便叫的!78%的网友不支持称顺风车主为“师傅”...
  4. 【网络安全】能在Twitter和Instagram上实现信息收集和数据获取的工具
  5. 开放下载!《阿里云存储白皮书》全面解读阿里云存储二十年的技术演进
  6. 2018年广东工业大学文远知行杯新生程序设计竞赛 1004 明日会吹明日的风β
  7. Java内部类的定义和使用
  8. java俄文xml解析错误,XML解析出错处理
  9. ProxmoxVE(V5.2) 之 使用外部ceph存储(luminous)
  10. 价值连城 知名深度强化学习Pieter Abbeel的采访 给机器学习 深度学习 和机器人学研究者从业者的建议
  11. Tomcat服务器端口修改,tomcat服务器配置端口 tomcat端口号修改操作步骤
  12. IEEE 802.15.4g协议介绍
  13. AndroidStudio安装之后虚拟机启动失败解决方法
  14. PCB封装欣赏了解之旅(上篇)—— 常用元器件
  15. 回归分析中f多少合适_spss回归分析F值很大,有100多,这样合理吗
  16. Linux新手需要熟稔于心的Linux常用命令
  17. 华为云mysql认证ssl_华为云SSL证书
  18. 技术接受模型(TAM,Technology Acceptance Model)
  19. react中列表渲染的局部刷新
  20. fetch_array()与fetch_assoc()的用法

热门文章

  1. scrollview的一些代理方法
  2. PostgreSQL备份之手工备份(Low Level API)
  3. Leetcode | Binary Tree Maximum Path Sum
  4. 由于目标机器积极拒绝,无法联接。microsoft sql server,错误:10061
  5. javascript检测浏览器精简版
  6. 软件外包是中国程序员的大金矿,大家一起来挣×××吧
  7. “元宇宙”数字化理解
  8. java basedaoimpl_java web项目DAO层通用接口BaseDao与实现类BaseDaoImpl
  9. 405 not allowed_无偿献血走进山东科技大学 405名爱心师生献血14万毫升
  10. 不同表结构数据迁移_数据结构:哈希 哈希函数 哈希表