ps:给你行数r和列数c,以及进入时的列数cc(从上边进入),如果能出来则输出走的步数,如果出不来,输出几步后进入一个循环圈,并输出循环的步数。。。
#include<stdio.h> main() { int i,j,b[11][11],k,N,S,E,n,m; char a[11][11]; scanf("%d%d%d",&N,&S,&E); while(N!=0&&S!=0&&E!=0) { k=0; for(i=0;i<N;i++) scanf("%s",a[i]); for(i=0;i<N;i++) for(j=0;j<S;j++) b[i][j]=0; n=1; m=E; b[0][E-1]=1; for(i=0;i<N*S*2;i++) { switch(a[n-1][m-1]) { case 'E': m++; break; case 'S': n++; break; case 'W': m--; break; case 'N': n--; break; } b[n-1][m-1]+=1; if(n>N||n<1||m>S||m<1) { k=1; break; } } n=m=0; for(i=0;i<N;i++) for(j=0;j<S;j++) { if(b[i][j]==1) n++; else if(b[i][j]>1) m++; } if(k==1) printf("%d step(s) to exit\n",n); else printf("%d step(s) before a loop of %d step(s)\n",n,m); scanf("%d%d%d",&N,&S,&E); } }