poj-2632-Crashing Robots
来源:互联网 发布:仿真花淘宝店好评语录 编辑:程序博客网 时间:2024/05/17 08:18
传送门
大意:一个仓库里面有几个机器人,给你机器人的初始位置及方向,然后让机器人执行一些指令,输出指令执行结果
如:
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.)
Robot i crashes into robot j, if robots i and j crash, and i is the moving robot.
OK, if no crashing occurs.
直接模拟机器人就行了,
tip:用map把方向转换成数字,这样每次转方向的时候只要取模就行了
#include <iostream> #include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <stack>#include <string> #include <map>#include <algorithm>#define N 110#define ll long longusing namespace std;struct robot{ int x,y; int dir;}r[N];int Map[N][N], a, b, n, m;map<char, int> mm;bool fun(int num, int rep){ int i, x = r[num].x, y = r[num].y; if (r[num].dir == 0){ for (i = 1; i <= rep; i++){ if (x+i > a){ printf("Robot %d crashes into the wall\n", num); return true; } if (Map[x+i][y]){ printf("Robot %d crashes into robot %d\n", num, Map[x+i][y]); return true; }else{ Map[x+i-1][y] = 0; Map[x+i][y] = num; r[num].x = x+i; } } }else if (r[num].dir == 1){ for (i = 1; i <= rep; i++){ if (y-i < 1){ printf("Robot %d crashes into the wall\n", num); return true; } if (Map[x][y-i]){ printf("Robot %d crashes into robot %d\n", num, Map[x][y-i]); return true; }else{ Map[x][y-i+1] = 0; Map[x][y-i] = num; r[num].y = y-i; } } }else if (r[num].dir == 2){ for (i = 1; i <= rep; i++){ if (x-i < 1){ printf("Robot %d crashes into the wall\n", num); return true; } if (Map[x-i][y]){ printf("Robot %d crashes into robot %d\n", num, Map[x-i][y]); return true; }else{ Map[x-i+1][y] = 0; Map[x-i][y] = num; r[num].x = x-i; } } }else{ for (i = 1; i <= rep; i++){ if (y+i > b){ printf("Robot %d crashes into the wall\n", num); return true; } if (Map[x][y+i]){ printf("Robot %d crashes into robot %d\n", num, Map[x][y+i]); return true; }else{ Map[x][y+i-1] = 0; Map[x][y+i] = num; r[num].y = y+i; } } } return false;}int main(){#ifndef ONLINE_JUDGE freopen("1.txt", "r", stdin);#endif int i, j, T; int num, rep; char act; bool flag; mm.insert(pair<char, int>('E', 0)); mm.insert(pair<char, int>('S', 1)); mm.insert(pair<char, int>('W', 2)); mm.insert(pair<char, int>('N', 3)); scanf("%d", &T) ; while(T--){ flag = false; memset(Map, 0, sizeof(Map)); scanf("%d%d", &a, &b); scanf("%d%d", &n, &m); for (i = 1; i <= n; i++){ cin >> r[i].x >> r[i].y >> act; r[i].dir = mm[act]; Map[r[i].x][r[i].y] = i; } for (i = 0; i < m; i++){ cin >> num >> act >> rep; if (flag) continue; switch(act){ case 'L': r[num].dir = ((r[num].dir-rep)%4+4)%4; break; case 'R': r[num].dir = (r[num].dir+rep)%4; break; case 'F': flag = fun(num, rep); break; } } if (!flag){ printf("OK\n"); } } return 0;}
0 0
- Poj 2632 Crashing Robots
- poj 2632 Crashing Robots
- poj 2632 Crashing Robots
- poj-2632-Crashing Robots
- POJ 2632 Crashing Robots
- POJ 2632 Crashing Robots
- POJ 2632 Crashing Robots
- POJ 2632 Crashing Robots
- POJ-2632-Crashing Robots
- POJ 2632 Crashing Robots
- POJ 2632 Crashing Robots
- POJ 2632 Crashing Robots
- poj 2632 Crashing Robots
- POJ 2632 Crashing Robots
- poj -2632 Crashing Robots
- poj 2632 Crashing Robots
- POJ 2632 Crashing Robots
- poj 2632 Crashing Robots
- POJ2308 Dearboy's Puzzle(DFS+BFS)
- CSS 同时具备两个class的样式
- Android ListView工作原理完全解析,带你从源码的角度彻底理解
- iOS 8 中 Extension 和 Containing App 之间的数据共享
- Python中排序常用到的sort 、sorted和argsort函数
- poj-2632-Crashing Robots
- Java中的数组
- 红糖水白糖水切换vb
- hive like与rlike的区别
- SQL 通配符使用
- 从 Linux 内核访问用户空间内存
- jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令
- Java中容器[Collection(List,Set,Queue),Map],迭代器(Iterator)和比较器(Comparator)及列表排序
- linux上部署Django项目(Apache+mod_wsgi+django)