矩阵最大只有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 : Judge Status : AcceptedRunId : 5927418 Language : C Author : Code Render Status : Rendered By HDOJ C Code Render Version 0.01 Beta
1 #include2 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