POJ 2632

来源:互联网 发布:ubuntu 映射网络共享 编辑:程序博客网 时间:2024/05/29 17:39

一个做得想抓狂的题目,题目简单唯有细心。

代码:

//POJ 2632#include<iostream>#include<fstream>using namespace std;struct startNode{int id;int x;int y;char ch;int No;};int main(){// ifstream infile("test.txt");// if(!infile)// {// cout<<"Error"<<endl;// return 0;// }startNode robet[102];int caseNum;cin>>caseNum;while(caseNum>0){ // cout<<"Case:"<<caseNum<<endl;int x,y;cin>>x>>y;int startSpace,intord;cin>>startSpace>>intord;int i;for(i=1;i<=startSpace;i++){robet[i].id=i;cin>>robet[i].x>>robet[i].y>>robet[i].ch;}int id,step,j,tage=0,k,h;char direction;for(i=1;i<=intord;i++){cin>>id>>direction>>step; for(j=1;j<=startSpace;j++) { if(robet[j].id==id) { for(k=0;k<step;k++) {if(tage==1)break;else if(tage==0){ if(robet[j].ch=='N') { if(direction=='F') robet[j].y+=1; else if(direction=='L') robet[j].ch='W'; else if(direction=='R') robet[j].ch='E'; } else if(robet[j].ch=='E') { if(direction=='F') robet[j].x+=1; else if(direction=='L') robet[j].ch='N'; else if(direction=='R') robet[j].ch='S';}else if(robet[j].ch=='S'){if(direction=='F')robet[j].y-=1;else if(direction=='L')robet[j].ch='E';else if(direction=='R')robet[j].ch='W';}else if(robet[j].ch=='W'){if(direction=='F')robet[j].x-=1;else if(direction=='L')robet[j].ch='S';else if(direction=='R')robet[j].ch='N';}}if(robet[id].x<=0||robet[id].y<=0||robet[id].x>=x+1||robet[id].y>=y+1){cout<<"Robot "<<id<<" crashes into the wall"<<endl;tage=1;break;}else{for(h=1;h<=startSpace;h++){if(robet[h].x==robet[id].x&&robet[h].y==robet[id].y&&h!=id){cout<<"Robot "<<id<<" crashes into robot "<<h<<endl;tage=1;}}if(tage==1)break;}}}}}if(tage==0)cout<<"OK"<<endl;caseNum--;}return 0;}


经验:当变量需求很多时,在需要的时候再定义使用是个很好的方法。