• C


    C - 红与黑

    Time Limit: 1000/1000MS (C++/Others) Memory Limit: 65536/65536KB (C++/Others)

    Problem Description

    有一个矩形的房间,房间铺着正方形的地砖。每个地砖被涂上红色或者黑色。初始时你站在房间里的某个黑色地砖上,你每次只能移动到相邻的四个地砖之一,即上下左右移动,并且你每次只能移动到黑色的地砖上,不能走到红色地砖。
    编程计算出按照上述要求你能走到的黑色地砖的个数。

    Input

    输入包含多组测试数据。每组测试数据第一行包括2个整数W和H;W和H是房间的宽度和长度,分别表示为房间的x和y坐标轴。W和H不大于20。接下来是H行每行W个地砖的房间,每个地砖表示如下:
    ‘.’——黑色地砖
    ‘#’——红色地砖
    ‘@’ ——你在房间里的初始位置(房间只出现一次)。
    输入的最后一行是两个整数0,不用处理。

    Output

    对每个测试样例,输出一行,即你能走到的黑色地砖的个数(包括你初始站在的黑色地砖)。

    Sample Input

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

    Sample Output

    45
    59
    6
    13





    #include<cstdio>
    #include<cstring>
    
    int tox[] = {1, 0, 0, -1};
    int toy[] = {0, 1, -1, 0};
    
    char mp[25][25];
    int w, h, cnt;
    
    bool judge(int x, int y){
        // 坐标(x, y) 在图的范围内,并且为黑色地砖('.')
        if(x >= 0 && x < h && y >= 0 && y < w && mp[x][y] == '.')
            return true;
        else return false;
    }
    
    void dfs(int x, int y){
        cnt++; //一个能走的,让cnt++
        mp[x][y] = '#'; // 把走过的变为不能走的,避免重复计算
        for(int i=0; i<4; i++){ // 枚举四连通的走法
            if(judge(x + tox[i], y + toy[i])){ // 如果下一步在图内并且可走 
                dfs(x + tox[i], y + toy[i]);
            }
        }
    }
    
    int main()
    {
        while(scanf("%d%d", &w, &h) && w && h){
            for(int i=0; i<h; i++){ // 输入图
                scanf("%s", mp[i]);
            }
            cnt = 0;
            for(int i=0; i<h; i++){
                for(int j=0; j<w; j++){ // 遍历寻找 @ 起点
                    if(mp[i][j] == '@') {
                        dfs(i, j);
                    }
                }
            }
            printf("%d
    ", cnt);
        }
        return 0;
    }
  • 相关阅读:
    Robotframework自动化6-基础关键字介绍(3)
    Robotframework自动化5-基础关键字介绍(2)
    Robotframework自动化4-基础关键字介绍(1)
    Robotframework自动化3-APP启动
    Robotframework自动化2-Windows环境搭建
    Robotframework自动化1-Windows环境搭建
    python2与python3同时安装
    Fiddler的基本界面介绍
    Fiddler的安装和APP抓包
    正则表达式
  • 原文地址:https://www.cnblogs.com/yangf428/p/10180785.html
Copyright © 2020-2023  润新知