码迷,mamicode.com
首页 > 其他好文 > 详细

C - 红与黑

时间:2018-12-26 19:52:51      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:有一个   pre   ring   scan   lse   左右   rip   rom   dash   

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\n", cnt);
    }
    return 0;
}

 

C - 红与黑

标签:有一个   pre   ring   scan   lse   左右   rip   rom   dash   

原文地址:https://www.cnblogs.com/yangf428/p/10180785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!