poj 2632
来源:互联网 发布:淘宝手机助手官方版 编辑:程序博客网 时间:2024/05/22 00:31
没有算法的题目不见得没有练习价值
这个题也是一个挺好的练习
模拟每一步的进行,细心不出错
#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 linesstruct 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;}
- POJ 2632
- poj 2632
- poj 2632
- POJ 2632
- POJ 2632
- poj-2632
- POJ-2632
- poj 2632
- poj 2632
- poj 2632
- Poj 2632 Crashing Robots
- poj 2632 Crashing Robots
- poj 2632 Crashing Robots
- poj 2632 模拟
- poj-2632-Crashing Robots
- POJ 2632 Crashing Robots
- POJ 2632 Crashing Robots
- POJ 2632 Crashing Robots
- BackBox 修改root密码
- 动态规划算法
- c# 写入xml
- MVC 最佳实践
- 孙鑫VC学习笔记:第十五讲 编写一个基于MFC对话框的聊天程序
- poj 2632
- View中Draw方法
- mongodb使用总结
- 探索 Pexpect,第 1 部分:剖析 Pexpect
- MyEclipse编码设置
- 守护进程
- 1017. Rate of Return (用二分法求近似解)
- COM组件注册真相(转)
- iOS的三维透视投影