“树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛C 机器人(蓝)
2009-04-28 13:04
267 查看
有个机器人,它根据给定的指令而在一个矩阵行走。指令有E,W,S,N四种分别代表东(east),西(west),南(south),北(north).直到出现回路(走到已经走过的地方)或者走出范围才结束,要求输出结束的坐标和结束的理由。 举个例子,如图1,它从起始位置开始(此时它处在(0,4)的位置),遇到的是W所以向西走,走到(0,3)的位置。又遇到S,于是向南走到(1,3)的位置…最后到(1,0)的位置遇到W,向西走就走出范围了,此时就结束并将结束是的位置输出。此时应该输出 (1,0) to exit 同样的走法,在图2中当它走到(0,2)的时候遇到S然后走到(1,2),而 (1,2)是之前走过的(出现了回路)。此时也是满足结束的条件,这时应该输出 (1,2) to a loop 输入的第一行为整数T(T>0)表示有组测试数据。接下来的T组测试数据,每组都以N,M,I,J(0〈N ,M〈=20)开头。N和M分别表示行和列的个数。I,J分别表示机器人的开始坐标。然后是N行M列的矩阵,其中的元素表示指令。 如果是因为出界而结束的,输出结束时的坐标加to exit ,例如 (1,0) to exit 如果是因为出现回路而结束的,输出出现回路的坐标加to a loop ,例如 (1,2) to a loop Input Output Sample Input [code]2 3 6 0 4 N E E S W E W W W E S S S N W W W W 4 5 0 0 S E S W E E E S N W N W E E N E W S E N
Sample Output
(1,0) to exit (1,2) to a loop
[/code]
#include<iostream> using namespace std; char map[15][15]; void zoulu(int &i,int &j) { if(map[i][j]=='W') j=j-1; else if(map[i][j]=='E') j=j+1; else if(map[i][j]=='S') i=i+1; else if(map[i][j]=='N') i=i-1; } int main() { int a,n,i,j,k; memset(map,'0',sizeof (map) ); cin>>a; bool biaoji[1000][1000]; bool p=true; while(a--) { memset(biaoji,false,sizeof (biaoji) ); int a[4]; for(i=0;i<4;i++) cin>>a[i]; for(i=0;i<a[0];i++) { for(j=0;j<a[1];j++) { cin>>map[i][j]; } } n=a[2]; k=a[3]; int tn,tk; while(map [k]=='W' || map [k]=='S' || map [k]=='E'|| map [k]=='N') { if(biaoji [k]==true) { p=false; tn=n; tk=k; break; } if(n<0 || k<0 || n >= a[0] || k>= a[1]) break; tn=n; tk=k; biaoji [k]=true; zoulu(n,k); } if(p==true) { cout<<"("<<tn<<","<<tk<<")"<<" to exit"<<endl; } else cout<<"("<<n<<","<<k<<")"<<" to a loop"<<endl; p=true; } return 0; }
相关文章推荐
- “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛B 数链问题(黄)
- “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛D IP检测(绿)
- “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛E 成绩统计图(红)
- “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛F 最后一个是谁?(紫)
- “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛H 正整数的连加分解(黄)
- “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛I 充分利用学习卡(粉)
- “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛G 又是一个小游戏(蓝)
- “树人杯”辽宁科技大学第三届校园程序设计大赛
- [2012山东省第三届ACM大学生程序设计竞赛]——Fruit Ninja II
- "高教社杯"第三届福建省大学生程序设计竞赛
- “高教社杯”第三届福建省大学生程序设计竞赛
- 2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛:n a^o7 !
- n a^o7 ! 2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛 队友不在,只好划水。。。
- 2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛——Pixel density
- CSU 1112 机器人的指令 (湖南省第八届大学生计算机程序设计竞赛 )
- Fruit Ninja II(山东省第三届ACM大学生程序设计竞赛 )
- 第三届H-star 程序设计竞赛初赛题解
- 山东省第三届ACM大学生程序设计竞赛(待添加)
- 2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛——n a^o7 !
- Pick apples(山东省第三届ACM大学生程序设计竞赛)