#include<stdio.h> #include<string.h> int main() { int n,m,k,i,j,vis[20][20],flag,step,step1; char s[20][20]; while(scanf("%d%d%d",&n,&m,&k)&&!(n==0&&m==0&&k==0)) { getchar(); step=0; step=0; step1=0; flag=0; memset(vis,0,sizeof(vis)); for(i=0;i<n;i++) gets(s[i]); i=0; while(!vis[i][k-1]) { vis[i][k-1]=1; if(s[i][k-1]=='W') { k--; step++; if(k-1<0) { flag=1; break; } } else if(s[i][k-1]=='N') { i--; step++; if(i<0) { flag=1; break; } } else if(s[i][k-1]=='E') { k++; step++; if(k-1>=m) { flag=1; break; } } else { i++; step++; if(i>=n) { flag=1; break; } } } if(!flag) { memset(vis,0,sizeof(vis)); while(!vis[i][k-1]) { vis[i][k-1]=1; if(s[i][k-1]=='W') { k--; step1++; } else if(s[i][k-1]=='N') { i--; step1++; } else if(s[i][k-1]=='E') { k++; step1++; } else { i++; step1++; } } } if(flag) printf("%d step(s) to exit\n",step); else printf("%d step(s) before a loop of %d step(s)\n",step-step1,step1); } }
HDU 1035
最新推荐文章于 2024-07-23 13:16:54 发布
本文探讨了一种算法,用于解决在特定字符数组中从指定起点到终点的路径寻优问题,并计算所需步数。该算法通过遍历数组并根据字符指示(如‘W’、‘N’、‘E’、‘S’)调整位置,同时考虑边界条件,最终输出到达目标或退出路径所需的步骤数量。
491

被折叠的 条评论
为什么被折叠?



