POJ 2632: Crashing Robots 哎呀!撞了!
2014-02-25 18:53
393 查看
原题链接:Crashing Robots
题目大意:给定房间大小和一些机器人的坐标,看机器人在给定的一系列动作下是否会撞墙或撞上其他机器人。
大致思路:模拟,关键是方向之间的转换,设其中一个方向比如W为0,则按逆时针方向 S为1、E为2、N为3;另外还要考虑到前进时坐标的变换,所以可以定义一个二维数组。具体代码实现如下:
题目大意:给定房间大小和一些机器人的坐标,看机器人在给定的一系列动作下是否会撞墙或撞上其他机器人。
大致思路:模拟,关键是方向之间的转换,设其中一个方向比如W为0,则按逆时针方向 S为1、E为2、N为3;另外还要考虑到前进时坐标的变换,所以可以定义一个二维数组。具体代码实现如下:
#include <cstdio> #include <cstring> int vec[4][2] = {{0,1},{-1,0},{0,-1},{1,0}}; int x[10005]; int y[10005]; int dir[10005]; int grid[105][105]; int breadth, depth; int toDir(char ch) { if(ch=='N') return 0; if(ch=='W') return 1; if(ch=='S') return 2; if(ch=='E') return 3; return -1; } bool move(int order, int repeat) { grid[x[order]][y[order]] = 0; for(int j=0; j<repeat; j++) { x[order] += vec[dir[order]][0]; y[order] += vec[dir[order]][1]; if(grid[x[order]][y[order]]!=0) { printf("Robot %d crashes into robot %d\n", order, grid[x[order]][y[order]]); return false; } if(x[order]>breadth || x[order]<1 || y[order]<1 || y[order]>depth) { printf("Robot %d crashes into the wall\n", order); return false; } } grid[x[order]][y[order]] = order; return true; } int main() { int N, rnum, inum, i, order, repeat, flag; char ch, action; scanf("%d", &N); while(N--) { memset(grid, 0, sizeof(grid)); scanf("%d%d", &breadth, &depth); scanf("%d%d", &rnum, &inum); for(i=1; i<=rnum; i++) { scanf("%d %d %c", &x[i], &y[i], &ch); dir[i] = toDir(ch); grid[x[i]][y[i]] = i; } flag = 1; for(i=1; i<=inum; i++) { scanf("%d %c %d", &order, &action, &repeat); if(flag) { if(action == 'L') { dir[order] += repeat%4; dir[order] = dir[order]%4; } else if(action == 'R') { dir[order] -= repeat%4; dir[order] = (dir[order]+4)%4; } else { if(!move(order, repeat)) flag = 0; } } } if(flag) printf("OK\n"); } return 0; }
相关文章推荐
- Transformation 能将 Windows XP/Server 2003 操作系统,完美地模拟成 Windows Vista 的软件
- 用javascript和css模拟select的脚本
- javascript用层模拟可移动的小窗口
- Javascript SHA-1:Secure Hash Algorithm
- javascript 模拟点击广告
- 模拟xcopy的函数
- C# SendInput 模拟鼠标操作的实现方法
- 简单的四则运算
- 数的奇偶性
- JS实现模拟新浪微博大厅和腾讯微博首页微博消息滚动效果
- vbs模拟登陆、遍历,然后批量,调用迅雷下载某电影网站的资源
- 把路由器模拟为帧中继交换机
- 网络工程师模拟题
- Cisco模拟器-Boson NetSim for CCNP 7.02
- php curl模拟post请求小实例
- 1272 小希的迷宫
- 1272 小希的迷宫
- hdu 1250 大数相加并用数组储存
- GNS模拟器完全使用图文指南
- 模块时代之ADI实验室电路