poj 2632
2013-01-04 17:34
148 查看
没有算法的题目不见得没有练习价值
这个题也是一个挺好的练习
模拟每一步的进行,细心不出错
这个题也是一个挺好的练习
模拟每一步的进行,细心不出错
#include <iostream> #include <vector> #include <map> #include <list> #include <set> #include <deque> #include <stack> #include <queue> #include <algorithm> #include <cmath> #include <cctype> #include <cstdio> #include <iomanip> #include <cmath> #include <cstdio> #include <iostream> #include <string> #include <sstream> #include <cstring> #include <queue> using namespace std; ///宏定义 const int INF = 20000000; const int MAXN = 110; ///全局变量 和 函数 int K; int cols, rows;//A,B 在100之间,分别代表列和行 int robotnums, instructions;//N lines struct robotpos { int row; int col; int dir; int mark; }; robotpos robotposs[MAXN]; bool isOk(int ith) { int i, j; if(robotposs[ith].row > rows || robotposs[ith].row <= 0 || robotposs[ith].col > cols || robotposs[ith].col <= 0) { printf("Robot %d crashes into the wall\n", ith); return false; } for(i = 1; i <= robotnums; ++i) { if(i == ith) continue; if(robotposs[ith].row == robotposs[i].row && robotposs[ith].col == robotposs[i].col) { printf("Robot %d crashes into robot %d\n", ith, i); return false; } } return true; } int main() { ///变量定义 int i, j, k; ///操作执行 scanf("%d", &K); while(K--) { scanf("%d %d", &cols, &rows); scanf("%d %d", &robotnums, &instructions); //读入robotnums个机器人的初始位置和方向 for(i = 1; i <= robotnums; ++i) { char dirction; scanf("%d %d %c", &robotposs[i].col, &robotposs[i].row, &dirction); if(dirction == 'E') { robotposs[i].dir = 0; } else if(dirction == 'N') { robotposs[i].dir = 1; } else if(dirction == 'W') { robotposs[i].dir = 2; } else { robotposs[i].dir = 3; } } //读入instructions条指令,并模拟之 bool flag = true; int ithrobot, times; char order; for(i = 0; i < instructions; ++i) { scanf("%d %c %d", &ithrobot, &order, ×); for(j = 0; j < times; ++j) { if(order == 'F') { if(robotposs[ithrobot].dir == 0) { robotposs[ithrobot].col++; if(!isOk(ithrobot)) { flag = false; break; } } else if(robotposs[ithrobot].dir == 1) { robotposs[ithrobot].row++; if(!isOk(ithrobot)) { flag = false; break; } } else if(robotposs[ithrobot].dir == 2) { robotposs[ithrobot].col--; if(!isOk(ithrobot)) { flag = false; break; } } else if(robotposs[ithrobot].dir == 3) { robotposs[ithrobot].row--; if(!isOk(ithrobot)) { flag = false; break; } } } else if(order == 'L') { robotposs[ithrobot].dir = (robotposs[ithrobot].dir + 1) % 4; } else if(order == 'R') { robotposs[ithrobot].dir = (robotposs[ithrobot].dir - 1 + 4) % 4; } } if(!flag) break; } if(i < instructions) { for(i = i + 1 ; i < instructions; ++i) { scanf("%d %c %d", &ithrobot, &order, ×); } } if(flag) printf("OK\n"); } ///结束 return 0; }
相关文章推荐
- POJ2632 Crashing Robots
- POJ 2632 Crashing Robots【模拟题】
- poj 2632 Crashing Robots, 模拟
- Crashing Robots(POJ--2632
- Crashing Robots(POJ_2632)
- poj 2632 模拟
- POJ 2632 Crashing Robots
- POJ 2632--Crashing Robots
- POJ2632——Crashing Robots
- poj2632 Crashing Robots 模拟水题
- POJ 2632-Crashing Robots(模拟-robot移动)
- POJ 2632:Crashing Robots:模拟试手
- POJ 2632 Crashing Robots(模拟)
- POJ 2632 Crashing Robots
- poj 2632
- POJ-2632
- poj2632 Crashing Robots
- poj2632 Crashing Robots 模拟
- POJ 2632 较复杂的模拟
- POJ 2632 Crashing Robots