zoukankan      html  css  js  c++  java
  • 【DFS】hdu 1312 Red and Black

    题目描述:

    http://acm.hdu.edu.cn/showproblem.php?pid=1312

     

    中文大意:

    一个长方形的房间,铺着方砖,每块方砖被标记为 # 或黑点. 。

    一个人站在起点 @ ,可以上、下、左、右移动,但只能移动到标记为黑点的方砖上,不能移动到标记为 # 的方砖上。

    要求:遍历尽可能多的黑点。

     

    思路:

    (1)将起点 s 标记为不可再被访问;
    (2)如果下一步有多种选择,则任选一个方向进行移动,并将新位置标记为不可再被访问,否则回退到前一步;
    (3)若新位置为起点,并且无路可走,则过程结束,否则继续(2)。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    struct node
    {
        int x,y;
    };
    
    int dir[4][2] = {
    {0, -1}, //
    {1, 0}, //
    {0, 1}, //
    {-1, 0} //
    };
    
    int w,h;
    int num;
    char** room;
    
    bool check(node tem)
    {
        if(tem.x>=0&&tem.x<w&&tem.y>=0&&tem.y<h)
        {
            return true;
        }
        return false;
    }
    
    void DFS(int dx, int dy)
    {
        node next;
        //尝试四个方向 
        for(int i=0;i<4;i++) 
        {
            next.x = dx + dir[i][0];
            next.y = dy + dir[i][1];
            if(check(next)&&room[next.y][next.x]=='.')
            {
                room[next.y][next.x] = '#';
                num++;
                DFS(next.x, next.y);
            }
        }
    }
    
    int main()
    {
        while(scanf("%d%d", &w, &h)&&(w!=0&&h!=0))
        {
            num = 1; 
            int dx, dy;
            room = new char*[h];
            for(int i=0;i<h;i++)
            {
                room[i] = new char[w];
                scanf("%s", room[i]);
                for(int j=0;j<w;j++)
                {
                    if(room[i][j] == '@')
                    {
                        dx = j;
                        dy = i;
                        break;
                    }
                }
            }
            
            DFS(dx, dy);
            printf("%d
    ", num);
        }
    }
    作者:老干妈就泡面
    本文版权归作者和博客园共有,欢迎转载,但请给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    文字上下滚动效果
    导航点击变化
    腾讯新闻导航栏
    Docker 数据卷和DockerFile
    Docker 容器
    Docker 镜像
    Docker的初始和架构
    面向对象的设计模式与原则
    安装CentOS 7MInimal版本
    ASP.NET WebApi 启动默认的HelpPage文档注释
  • 原文地址:https://www.cnblogs.com/bjxqmy/p/14295857.html
Copyright © 2011-2022 走看看