zoukankan      html  css  js  c++  java
  • Red and Black (DFS)

    有一个长方形的房间,覆盖了正方形的磁砖。每块磁砖的颜色,要么是红色,要么是黑色。一名男子站在一块黑色的磁砖上。他可以从一块磁砖移至相邻四块磁砖中的某一块。但是,他不允许在红色磁砖上移动,他只允许在黑色磁砖上移动。 

    编写一个程序,使得他允许重复上述的移动,判断他所能到达的黑色磁砖的数量。 

    输入

    输入由多个数据集组成。数据集的起始行包含了两个正整数 W 和 H;W 和 H 分别是 x- 和 y- 方向的磁砖数量。W 和 H 不超过 20 。 

    在数据集中,还有 H 行,每行包含了 W 个字符。每个字符按如下方式表示一块磁砖的颜色。 

    '.' - 一块黑色的磁砖 
    '#' - 一块红色的磁砖 
    '@' - 一名男子,站在一块黑色磁砖上 (在一个数据集中,恰好出现一次) 

    以包含两个 0 的一行,表示输入结束。 

    输出

    对于每个数据集,程序应当输出一行,包含他从初始磁砖所能抵达的磁砖数量 (包括初始磁砖自身)。

    示例输入

    6 9
    ....#.
    .....#
    ......
    ......
    ......
    ......
    ......
    #@...#
    .#..#.
    11 9
    .#.........
    .#.#######.
    .#.#.....#.
    .#.#.###.#.
    .#.#..@#.#.
    .#.#####.#.
    .#.......#.
    .#########.
    ...........
    11 6
    ..#..#..#..
    ..#..#..#..
    ..#..#..###
    ..#..#..#@.
    ..#..#..#..
    ..#..#..#..
    7 7
    ..#.#..
    ..#.#..
    ###.###
    ...@...
    ###.###
    ..#.#..
    ..#.#..
    0 0

    示例输出

    45
    59
    6
    13
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<set>
    #include<vector>
    #include<stack>
    #include<queue>
    #include<algorithm>
    #include<cstdio>
    #include<algorithm>
    #include<functional>
    #include<sstream>
    int W, H;
    char z[21][21];
    
    int f(int x, int y)
    {
        if (x < 0 || x >= W || y < 0 || y >= H)
            return 0;
        if (z[x][y] == '#')
        {
            return 0;
        }
        else
        {
            z[x][y] = '#';
            return 1 + f(x - 1, y) + f(x + 1, y) + f(x, y - 1) + f(x, y + 1);
        }
    }
    int main(int argc, char* argv[])
    {
        int i, j, num;
        while (scanf("%d%d", &H, &W) && W != 0 && H != 0)
        {
            for (i = 0; i < W; i++)
                scanf("%s", z[i]);
    
            for (i = 0; i < W; i++)
                for (j = 0; j < H; j++)
                    if (z[i][j] == '@') printf("%d
    ", f(i, j));
        }
        return 0;
    }
  • 相关阅读:
    document.URL 和 windows.location.href的区别
    毕向东udp学习笔记3多线程聊天
    毕向东udp学习笔记2
    毕向东udp学习笔记1
    udp 服务器界面监听
    android jni 总复习(转载)
    Android jni 编程4(对基本类型二维整型数组的操作)
    Android jni 编程3(对基本类型一维整型数组的操作)总结版
    Android jni 编程2(对基本类型一维整型数组的操作)
    Android jni 编程1(对基本类型字符串的操作)
  • 原文地址:https://www.cnblogs.com/edych/p/7236323.html
Copyright © 2011-2022 走看看