hdu 1035 Robot Motion
算是搜索题吧。。。。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 /* 2 hdu 1035 Robot Motion 3 简单题 虽然代码有些长 但是写起来简单,不费脑子 4 */ 5 #include <iostream> 6 #include <stdio.h> 7 #include <cstring> 8 using namespace std; 9 int p; 10 int m,n; 11 int a[15][15]; 12 char c[15][15]; 13 void fun(int x,int y) 14 { 15 p++; 16 if(x<0||x>=m) throw -2;//需先判断是否出界,否则WA 17 if(y<0||y>=n) throw -2; 18 if(a[x][y]==-1) 19 a[x][y]=p; 20 else 21 throw a[x][y]; 22 switch(c[x][y]) 23 { 24 case 'N': 25 fun(x-1,y); 26 break; 27 case 'E': 28 fun(x,y+1); 29 break; 30 case 'W': 31 fun(x,y-1); 32 break; 33 case 'S': 34 fun(x+1,y); 35 break; 36 } 37 38 } 39 int main() 40 { 41 42 while(scanf("%d %d",&m,&n)!=EOF) 43 { 44 if(m==0||n==0) 45 break; 46 memset(a,-1,sizeof(a)); 47 memset(c,'\0',sizeof(c)); 48 int e; 49 p=-1; 50 scanf("%d",&e); 51 for(int i=0;i<m;i++) 52 scanf("%s",c[i]); 53 try 54 { 55 fun(0,e-1); 56 } 57 catch(int t) 58 { 59 if(t==-2) 60 printf("%d step(s) to exit\n",p); 61 else 62 printf("%d step(s) before a loop of %d step(s)\n",t,p-t); 63 64 } 65 } 66 return 0; 67 }