zoukankan      html  css  js  c++  java
  • PKU 1573 Robot Motion(简单模拟)

    原题大意:原题链接

    给出一个矩阵(矩阵中的元素均为方向英文字母),和人的初始位置,问是否能根据这些英文字母走出矩阵.(因为有可能形成环而走不出去)

    此题虽然属于水题,但是完全独立完成而且直接1A还是很开心的

    注意:对于形成环的情况则从进入环的交点处重新走一遍,记录步数即可

    #include<cstdio>
    #include<cstring>
    int n,m,p;
    bool vis[1010][1010];
    char str[1010][1010];
    bool can(int x,int y)
    {
        if(x<1||x>n||y<1||y>m||vis[x][y])
            return false;
        return true;
    }
    int main()
    {
        while(scanf("%d%d%d",&n,&m,&p),n|m|p){
            memset(vis,0,sizeof(vis));
            getchar();
            for(int i=1;i<=n;i++){
                for(int j=1;j<=m;j++)
                    scanf("%c",&str[i][j]);
                getchar();
            }
            int x=1,y=p,step1=0;
            while(can(x,y)){
                int px=x,py=y;
                vis[px][py]=1;
                if(str[px][py]=='E')
                    {y++,step1++;}
                else if(str[px][py]=='S')
                    {x++,step1++;}
                else if(str[px][py]=='W')
                    {y--,step1++;}
                else if(str[x][y]=='N')
                    {x--,step1++;}
            }
            if(vis[x][y]){
                int step2=0,ox=x,oy=y;
                while(1){
                    int px=x,py=y;
                    if(str[px][py]=='E')
                        {y++,step2++;}
                    else if(str[px][py]=='S')
                        {x++,step2++;}
                    else if(str[px][py]=='W')
                        {y--,step2++;}
                    else if(str[px][py]=='N')
                        {x--,step2++;}
                    if(x==ox&&y==oy){
                        printf("%d step(s) before a loop of %d step(s)
    ",step1-step2,step2);
                        break;
                    }
                }
            } 
            else printf("%d step(s) to exit
    ",step1);
        }
    } 
  • 相关阅读:
    MAVEN 配置阿里云源
    Windows10远程连接CentOS7(搭建Xrdp服务器)
    在jsp显示图片
    unbuntu自动任务定时重启
    eager模式与自定义训练
    JDK安装
    VMware克隆Linux虚拟机注意事项
    系统字符编码
    Iptables防火墙
    查看系统信息
  • 原文地址:https://www.cnblogs.com/freinds/p/6481463.html
Copyright © 2011-2022 走看看