矩阵最大只有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 : AcceptedRunId : 5927418 Language : C Author : qq1203456195Code 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 }
转载于:https://www.cnblogs.com/CheeseZH/archive/2012/05/11/2495831.html
相关资源:数据结构—成绩单生成器
转载请注明原文地址: https://win8.8miu.com/read-1494401.html