矩阵最大只有10*10,规模较小,用递归可以解决。
最初第15行代码除了问题:
(1)直接使用了题目中的输出3 step(s) before a loop of 8 step(s),忘了把3和8改成%d
(2)两个参数maze[x][y]-1000,idx-maze[x][y]+1,分别犯了①把1000写成999②没有+1,两个错误。
Problem : 1035 ( Robot Motion ) Judge Status : Accepted
RunId : 5927418 Language : C Author : qq1203456195
Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta
RunId : 5927418 Language : C Author : qq1203456195
Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta
1 #include <stdio.h> 2 int maze[11][11]; 3 int r,c,b; 4 int idx; 5 void step(int x,int y) 6 { 7 int t; 8 if(x<0||x>=r||y<0||y>=c) 9 { 10 printf("%d step(s) to exit\n",idx-999); 11 return; 12 } 13 if(maze[x][y]>=1000) 14 { 15 printf("%d step(s) before a loop of %d step(s)\n",maze[x][y]-1000,idx-maze[x][y]+1); 16 return; 17 } 18 t=maze[x][y]; 19 idx++; 20 maze[x][y]=idx; 21 switch (t) 22 { 23 case 'N': 24 step(x-1,y); 25 break; 26 case 'S': 27 step(x+1,y); 28 break; 29 case 'E': 30 step(x,y+1); 31 break; 32 case 'W': 33 step(x,y-1); 34 break; 35 } 36 } 37 int main() 38 { 39 int i,j; 40 while (scanf("%d%d",&r,&c),r||c) 41 { 42 scanf("%d",&b); 43 getchar(); 44 for (i=0;i<r;i++) 45 { 46 for (j=0;j<c;j++) 47 maze[i][j]=getchar(); 48 getchar(); 49 } 50 idx=999; 51 step(0,b-1); 52 } 53 return 0; 54 }