HDU2300 Crashing Robots
来源:互联网 发布:自学php怎么开始 编辑:程序博客网 时间:2024/04/30 02:04
题目类型 : 模拟
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct robots{ int ix ; int iy ; int move ; void remove(void); bool event(int num , char e); bool judge_wall(void); bool judge_crash(int num);} robot[120];struct affairs{ int robot; //事件发生的机器人编号 char run ; //事件类型 int time ; //事件执行次数} affair[120];struct maps{ int mx ; //地图最大x坐标 int my ; //地图最大y坐标 int robot_num; //机器人数 int affair_num; //事件数 int node[120][120]; void init(void); //地图初始化} map;int main(){ freopen("in.txt","r",stdin); int ncase ; bool safe ; cin >> ncase ; while(ncase --) { map.init(); safe = true ; for(int k = 1, rr ; k <=map.affair_num&&safe; k++) for(int tt = 1 ; tt <=affair[k].time; tt ++) { rr = affair[k].robot ; map.node[robot[rr].ix][robot[rr].ix] = 0 ; if(!robot[rr].event(rr,affair[k].run)) { safe = false ; break ; } map.node[robot[rr].ix][robot[rr].iy] = rr ; } if(safe) cout<< "OK" <<endl; } return 0;}void maps::init(void){ char mm ; memset(node,0,sizeof(node)); cin >> mx >> my ; cin >> robot_num >> affair_num ; for(int i = 1 ; i <= robot_num ; i ++) { cin >> robot[i].ix >> robot[i].iy >> mm ; node[robot[i].ix][robot[i].iy] = i ; //将字符型的方向改为数值的方向 if(mm == 'N') robot[i].move = 1 ; else if(mm == 'E') robot[i].move = 2 ; else if(mm == 'S') robot[i].move = 3 ; else if(mm == 'W') robot[i].move = 4 ; } for(int i = 1 ; i <= affair_num ; i ++) cin >> affair[i].robot >> affair[i].run >> affair[i].time ; return ;}void robots::remove(void){ switch(move) { case 1 : iy ++ ; break ; case 2 : ix ++ ; break ; case 3 : iy -- ; break ; case 4 : ix -- ; break ; } return ;}bool robots::judge_crash(int num){ if(map.node[ix][iy] == 0 ) return true ; cout<<"Robot "<<num<<" crashes into robot "<<map.node[ix][iy]<<endl; return false ;}bool robots::event(int num,char e){ switch(e) { case 'L' : move -- ; if(move < 1) move += 4 ; break ; case 'R' : move ++ ; if(move > 4) move -= 4 ; break ; case 'F' : remove(); if(!judge_wall()) { cout<<"Robot "<<num<<" crashes into the wall"<<endl; return false ; } if(!judge_crash(num)) { return false; } break; } return true;}bool robots::judge_wall(void){ if(ix > map.mx || ix < 1 ||iy > map.my || iy < 1) return false ; else return true ;}
- HDU2300 Crashing Robots
- Crashing Robots
- Crashing Robots
- Crashing Robots
- Crashing Robots
- pku2632 Crashing Robots
- Poj 2632 Crashing Robots
- Crashing Robots POJ2632
- poj 2632 Crashing Robots
- poj 2632 Crashing Robots
- poj2632 Crashing Robots
- poj-2632-Crashing Robots
- POJ 2632 Crashing Robots
- POJ 2632 Crashing Robots
- POJ 2632 Crashing Robots
- POJ 2632 Crashing Robots
- POJ2632--Crashing Robots--模拟
- POJ-2632-Crashing Robots
- nsis打包exe
- android过滤隐藏文件FileFilter
- MVC安卓实践
- 开发者须知的25个免费数据可视化工具
- 以root帐号登陆后没有声音
- HDU2300 Crashing Robots
- 数据库战略高度解析(3) ODBC
- Parse 是什么
- SG
- 高级Bash脚本编程指南(15):循环
- 【ajax】ajax基本应用
- time命令,计算脚本执行时间
- JAVA泛型(代码级解释)
- 如何做事