• HDOJ---1035 Robot Motion


    这几天比较颓= = ~~~~效率几乎为零


    原题:http://acm.hdu.edu.cn/showproblem.php?pid=1035

    题意:

    一个迷宫每个格子都有{W(左走),E(右走),S(下走),N(上走)}中的一个字符,表示下一步行走方向;

    输入:

    迷宫的  纵向长度m和横向长度n  以及 起点:[0][x];

    输出如果能走出去输出:

    (ans) step(s) to exit;
    如果出不去  存在循环输出 
    (几步之后)step(s) before a loop of (几个格子的循环) step(s)
    我能想到的是写个递归……应该是……
    map[][]构造迷宫;
    visit[][]记录是否被访问;
    然后两个变量,一个记录步数(有循环则为进入循环前的),一个记录循环长度(若为0则不输出)(人太颓了,回来贴代码- - ,先去睡会儿
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    char map[15][15];
    int vis[15][15];
    int r,c,st;
    int loop,step;
    int dfs(int x,int y,int num)
    {
        if(x>r||x<1||y<1||y>c)
        {
            cout<<num-1<<" step(s) to exit"<<endl;
            return 0;
        }
        if(vis[x][y])
        {
            cout<<vis[x][y]-1<<" step(s) before a loop of ";
            return 1;
        }
        vis[x][y]=num;
        if(map[x][y]=='N')
        {
            if(dfs(x-1,y,num+1)==1)
                cout<<vis[x][y]-vis[x-1][y]+1<<" step(s)"<<endl;
        }
        else if(map[x][y]=='S')
        {
            if(dfs(x+1,y,num+1)==1)
                cout<<vis[x][y]-vis[x+1][y]+1<<" step(s)"<<endl;
        }
        else if(map[x][y]=='E')
        {
            if(dfs(x,y+1,num+1)==1)
                cout<<vis[x][y]-vis[x][y+1]+1<<" step(s)"<<endl;
        }
        else
        {
            if(dfs(x,y-1,num+1)==1)
                cout<<vis[x][y]-vis[x][y-1]+1<<" step(s)"<<endl;
        }
        return 0;
    }
    int main()
    {
       
        while(cin>>r>>c>>st,r&&c)
        {
            memset(vis,0,sizeof(vis));
            for(int i=1;i<=r;i++)
                for(int j=1;j<=c;j++)
                cin>>map[i][j];
            dfs(1,st,1);
        }
        return 0;
    }

  • 相关阅读:
    读取Excel还用POI?试试这款开源工具
    Maven optional 关键字透彻图解
    Java 8 Stream Api 中的 peek 操作
    Lombok 使用详解,简化Java编程
    C# 基础知识系列- 16 开发工具篇
    C# 基础知识系列- 15 异常处理篇
    C# 基础知识系列- 14 IO篇 流的使用
    Java Spring Cloud 实战之路-01 框架选型
    C# 基础知识系列- 14 IO篇 文件的操作
    C# 基础知识系列- 14 IO篇 文件的操作
  • 原文地址:https://www.cnblogs.com/XqwKen/p/4564321.html
Copyright © 2020-2023  润新知