Red and Black

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

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

输入

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

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

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

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

输出

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

示例输入

6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
11 9
.#.........
.#.#######.
.#.#.....#.
.#.#.###.#.
.#.#[email protected]#.#.
.#.#####.#.
.#.......#.
.#########.
...........
11 6
..#..#..#..
..#..#..#..
..#..#..###
..#..#..#@.
..#..#..#..
..#..#..#..
7 7
..#.#..
..#.#..
###.###
[email protected]
###.###
..#.#..
..#.#..
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\n", f(i, j));
    }
    return 0;
}
时间: 2024-10-19 12:58:55

Red and Black的相关文章

Linux red hat 安装ansible

今日对Linux 系统是Red Hat Enterprise Linux Server release 6.5 (Santiago)对ansible进行安装. 由于系统的源为yum源,所以使用yum install ansible 进行安装,但是报错.如图.(这个错误是yum源没有注册到red hat 系统). yum源不能安装,所以换了一个思路.使用pip安装.pip是依赖python安装的. 1.检查Python版本 Python -v 检查出来为Python 2.6.6 2.检查pip 版

red hat7 系统可以ping通ip地址但是不能ping通域名

在red hat7中ifconfig后出现这样的情况,ens33是物理网卡,与eth0一样只是不同的名字.但是只能ping通ip地址不能ping通域名. 解决方法: 在文件 /etc/resolv.conf文件下更改nameserver的值 加上 nameserver 8.8.8.8  域名解析服务  nameserver 8.8.4.4为备用的 在文件 etc/sysconfig/network-scripts下修改 ifcfg-eth0 或者 ifcfg-ens33文件,设置静态ip地址,

red halt 7.3使用Cent-os7 yum 源

困惑:在使用red halt学习时,未注册的用户,有些软件是无法通过yum网络源和本地光盘下载,此时使用Centos的yum源就显得很方便,因为红帽收购了Centos 所以软件的兼容性基本不会有什么问题 1.检查是否安装yum包 查看RHEL是否安装了yum,若是安装了,那么又有哪些yum包: [[email protected] yum.repos.d]# rpm -qa |grep yumyum-3.4.3-118.el7.noarchyum-utils-1.1.31-24.el7.noar

BZOJ1419: Red is good

1419: Red is good Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 639  Solved: 247[Submit][Status][Discuss] Description 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元.可以随时停止翻牌,在最优策略下平均能得到多少钱. Input 一行输入两个数R,B,其值在0到5000之间 Output 在最优策略下平均能得到多少钱

POJ1979 Red and Black

问题链接:POJ1979 Red and Black. 题意简述:输入正整数w和h,w为列数,h为行数.输入h×w矩阵 (1 <= h <= 20; 1 <= w <= w),其中'.'代表可到达,'#'代表不可到达,'@'代表开始点.问从'@'开始可以到达最多多少个点. 问题分析:本题可以使用深度优先搜索求解,用广度优先搜索也可以求解,差别不大.需要注意的是'@'也算一个可以到达的点. 程序说明如下: 1.方向数组 使用方向数组后,各个方向的试探的程序就会变得简洁了,用循环处理即

Red style books store OpenCart 主题模板 ABC-0117

Red style books store OpenCart 主题模板 ABC-0117 RED STYLE BOOKS STORE OPENCART 主题模板 ABC-0117 Designed with luxurious colorsSuitable for shop selling: Books , templates, Card, picture, Art, Photography..Designed by CSS, HTMLSupports multiple languages, m

HDU1312 Red and Black

Red and Black Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9732    Accepted Submission(s): 6060 Problem Description There is a rectangular room, covered with square tiles. Each tile is color

Linux(Red Hat 6 32位) 下安装Mysql5.6.30

1. 下载MySQL 5.6 下载页面:http://dev.mysql.com/downloads/mysql/ 此处选择"Red Hat Enterprise Linux 6 / Oracle Linux 6 (x86, 32-bit), RPM Bundle"下载,下载至/root/fuxian/目录下,下载文件名为"MySQL-5.6.30-1.el6.i686.rpm-bundle.tar" 2. 解压tar包 cd /fuxian/Downloads/

System center 2012 R2 实战七、SCOM2012R2监控Red hat Linux5.7

1    准备工具 u  putty_V0.63.0.0.43510830.exe ------>用于连接到Linux服务器 u  Winscp  ------>用于将windows与 Linux服务器文件互传 2    操作步骤 复制代理至Linux服务器 在SCOM安装光盘中,找到Linux服务器代理 打开Wincap工具,将用于Linux服务器的SCOM代理,复制到Linux服务器根目录下 1            域名解析配置 u  修改Linux服务器主机名称+DNS后缀 u  去D

Red Hat Enterprise Linux 5.10在vmware10下的安装

Red Hat Enterprise Linux 5.10在vmware10下的安装 1.启动"新建虚拟机"向导程序.如下图,选择"自定义",点击"下一步" 2.选择虚拟机硬件兼容性,你可以根据自己需求选择,这里选择默认,如下图.单击"下一步" 3.指定虚拟机系统的安装方式.选择"稍后安装操作系统",如果选择"安装盘镜像文件(iso)",虚拟机启动后会自动执行快速安装,不方便用户控制安装