poj 1573 Robot Motion

因为省赛时模拟没有1A。。 所以刷水题刷水题。。。

明明C++G++都能过好不好。。。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=12;
char way[maxn][maxn];
int steps[maxn][maxn];
int n,m;
int step,newstep;
int  judge(int x,int y)
{
    if(x==0||y==0||x==n+1||y==m+1)
    {
        step++;
        cout<<step<<" step(s) to exit\n";
        return 1;
    }
    else if(steps[x][y]==1)
    {
        newstep++;
        return 2;
    }
    else if(steps[x][y]==2)
    {
        if(step==newstep)
        {
            step--;
        }
        cout<<step-newstep+1<<" step(s) before a loop of "<<newstep<<" step(s)\n";
        return 1;
    }
    else
    {
        step++;
    }
    return 0;
}
int main()
{
    int starty;
    while(cin>>n>>m>>starty)
    {
        if(n==0&&m==0)
            break;
        int startx=1;
        for(int i=1;i<=n;i++)
        {
            cin>>(way[i]+1);
        }
        memset(steps,0,sizeof(steps));
        step=0;
        newstep=0;
        int ok=0;
        while(1)
        {
            if(ok==1)
                break;
            if(way[startx][starty]=='N')
            {
                startx--;
                ok=judge(startx,starty);
                steps[startx][starty]++;
            }
            else if(way[startx][starty]=='S')
            {
                startx++;
                ok=judge(startx,starty);
                steps[startx][starty]++;
            }
            else if(way[startx][starty]=='E')
            {
                starty++;
                ok=judge(startx,starty);
                steps[startx][starty]++;
            }
            else
            {
                starty--;
                ok=judge(startx,starty);
                steps[startx][starty]++;
            }
        }
    }
    return 0;
}

你可能感兴趣的:(模拟,poj)