模拟题
#include<iostream>
#include<fstream>
using namespace std;
int m,n,in,path[12][12],x,y,c1,c2;
char board[12][12];
char c;
bool proceed(){
if(x<1||x>m||y<1||y>n){
c1=path[x][y]-1;
c2=0;
return false;
}
int x1,y1;
x1=x;
y1=y;
switch(board[x1][y1]){
case 'N':x1--;break;
case 'S':x1++;break;
case 'W':y1--;break;
case 'E':y1++;break;
}
if(path[x1][y1]!=0){
c1=path[x1][y1]-1;
c2=path[x][y]-path[x1][y1]+1;
return false;
}
path[x1][y1]=path[x][y]+1;
x=x1;
y=y1;
return true;
}
int main(){
//streambuf *backup;
// ifstream fin;
// fin.open("data.in");
// backup = cin.rdbuf(); // back up cin's streambuf
// cin.rdbuf(fin.rdbuf()); // assign file's streambuf to cin
cin>>m>>n>>in;
while(m!=0){
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin>>board[i][j];
}
}
memset(path,0,sizeof(path));
c1=c2=0;
x=1;y=in;
path[x][y]=1;
while(proceed());
if(c2==0){
cout<<c1<<" step(s) to exit"<<endl;
}else{
cout<<c1<<" step(s) before a loop of "<<c2<<" step(s)"<<endl;
}
cin>>m>>n>>in;
}
return 0;
}