hdu1035

来源:互联网 发布:python 教程 hetland 编辑:程序博客网 时间:2024/05/23 00:08

dps简单模拟

如果能出去,输出步数

如果成环,输出成环前和环的步数

#include <iostream>#include <cstring>using namespace std;char mp[1005][1005];int d[4][2]={1,0,0,1,0,-1,-1,0},k,a,b,c,flag[1005][1005];void dps(int x,int y){    if(x<=0||y<=0||x>a||y>b)    {        cout<<k<<" step(s) to exit"<<endl;        return;    }    if(flag[x][y]!=0)    {        cout<<flag[x][y]-1<<" step(s) before a loop of "<<k-flag[x][y]+1<<" step(s)"<<endl;        return;    }    if(mp[x][y]=='E')    {        k++;        flag[x][y]=k;        dps(x,y+1);    }    if(mp[x][y]=='W')    {        k++;        flag[x][y]=k;        dps(x,y-1);    }    if(mp[x][y]=='N')    {        k++;        flag[x][y]=k;        dps(x-1,y);    }    if(mp[x][y]=='S')    {        k++;        flag[x][y]=k;        dps(x+1,y);    }}int main(){    while(cin>>a>>b>>c&&a+b)    {        memset(flag,0,sizeof(flag));        for(int i=1;i<=a;i++)            for(int j=1;j<=b;j++)            cin>>mp[i][j];            k=0;        dps(1,c);    }    return 0;}


0 0
原创粉丝点击