杭电1035

来源:互联网 发布:js动态创建div容器 编辑:程序博客网 时间:2024/05/17 04:45

这道题很简单,用一个矩阵纪录该机器人是否走过某一个地方,当其走过该处纪录当前步数,接着如果走到一个以前走过的地方,就是循环了,若是走到边界就是走出去了。

#include<iostream>#include<string>using namespace std;int main(){  int row,col,pos;  cin>>row>>col>>pos;  while(row!=0&&col!=0&&pos!=0){    int line=0;    pos=pos-1;    int count=0;    bool out=false;    string *strs=new string[row];    int** matrix=new int*[row];    for(int i=0;i<row;i++){        matrix[i]=new int[col];    }    for(int i=0;i<row;i++){        cin>>strs[i];    }    for(int i=0;i<row;i++){        for(int j=0;j<col;j++)            matrix[i][j]=0;    }    while(!out){        if(matrix[line][pos]!=0) //已经走过了,陷入循环中            break;        matrix[line][pos]=++count;        switch (strs[line][pos]){          case 'N':line-=1;break;          case 'S':line+=1;break;          case 'W':pos-=1; break;          case 'E':pos+=1; break;        }        if(line==-1||pos==-1||line==row||pos==col)//可以出去了            out=true;    }    if(out){        cout<<count<<" step(s) to exit"<<endl;    }else        cout<<matrix[line][pos]-1<<" step(s) before a loop of "<<count-matrix[line][pos]+1<<" step(s)"<<endl;    cin>>row>>col>>pos;  }  return 0;}
原创粉丝点击