A - Red and Black(3.2.1)(搜索)

A - Red and Black(3.2.1)

Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d
& %I64u

Submit Status

Description

There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can‘t move on red tiles, he can move only on black tiles.

Write a program to count the number of black tiles which he can reach by repeating the moves described above.

Input

The input consists of multiple data sets. A data set starts with a line containing two positive integers W and H; W and H are the numbers of tiles in the x- and y- directions, respectively. W and H are not more than 20.

There are H more lines in the data set, each of which includes W characters. Each character represents the color of a tile as follows.

‘.‘ - a black tile

‘#‘ - a red tile

‘@‘ - a man on a black tile(appears exactly once in a data set)

The end of the input is indicated by a line consisting of two zeros.

Output

For each data set, your program should output a line which contains the number of tiles he can reach from the initial tile (including itself).

Sample Input

6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
11 9
.#.........
.#.#######.
.#.#.....#.
.#.#.###.#.
.#.#[email protected]#.#.
.#.#####.#.
.#.......#.
.#########.
...........
11 6
..#..#..#..
..#..#..#..
..#..#..###
..#..#..#@.
..#..#..#..
..#..#..#..
7 7
..#.#..
..#.#..
###.###
[email protected]
###.###
..#.#..
..#.#..
0 0

Sample Output

45
59
6
13
#include<iostream>
#include<cstring>
using namespace std;
int b,c,k,i,s,x,y,n;
char a[21][21];
int sousuo(int x,int y,int a1,int b)
{
	int n=0;
	if(x>0)
		if(a[x-1][y]=='.')
		{n++;a[x-1][y]='a';n=n+sousuo(x-1,y,a1,b);}
    if(y>0)
		if(a[x][y-1]=='.')
		{n++;a[x][y-1]='a';n=n+sousuo(x,y-1,a1,b);}
	if(x<a1)
      if(a[x+1][y]=='.')
		{n++;a[x+1][y]='a';n=n+sousuo(x+1,y,a1,b);}
	  if(y<b)
		if(a[x][y+1]=='.')
		{n++;a[x][y+1]='a';n=n+sousuo(x,y+1,a1,b);}
		return n;
}
int main()
{
	int j;
	while(cin>>k>>s&&k)
	{
		memset(a,'q',sizeof(a));
	  for(i=0;i<s;i++)
		  for(j=0;j<k;j++)
		  {
			  cin>>a[i][j];
			  if(a[i][j]=='@')
				  x=i,y=j;
		  }

         n=sousuo(x,y,s,k);
		 cout<<++n<<endl;
	}
	return 0;
}

A - Red and Black(3.2.1)(搜索),布布扣,bubuko.com

时间: 2024-10-13 23:30:23

A - Red and Black(3.2.1)(搜索)的相关文章

POJ 1979 Red and Black 四方向棋盘搜索

Red and Black Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 50913   Accepted: 27001 Description There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a

【UWP通用应用开发】集成搜索、粘贴板以及设置共享源和共享目标

在应用中集成搜索 上一节是关于如何添加应用设置和帮助,这一篇讲的是和设置类似的搜索. So-- Let's do it ! 先从简单的页面布局开始,想想我们需要什么,一个带搜索事件的Button,还需要一些TextBlock来提示用户,核心部分自然是一个GridView咯. <Grid Background="Wheat"> <Grid.RowDefinitions> <RowDefinition Height="Auto" />

Windows App开发之集成设置、帮助、搜索和共享

应用设置和应用帮助 "设置"合约 上一节中我们学习了如何将应用设置保存到本地,这种方式是通过在App内添加设置选项,这里还有一种方式.微软将其称为"设置"合约,并且所有的Windows应用商店应用都将自动配合这种合约.但是应用自带的这种设置如果不做任何修改可谓毫无作用.而我们添加这些设置则可以让应用更加个性化哦. SettingsFlyout 首先新建一个SettingsFlyout页面,也许很多童鞋会像我当初学这个一样立马就调试程序等着看看这个设置是长什么样,不过

【万里征程——Windows App开发】在应用中集成搜索

已经刚刚一个月没有更新这个专栏了,今天开始要连续更新几篇啦~ 上一篇我们学习的是如何添加设置,这一篇讲的是和设置类似的搜索. So-- Let's do it ! 先从简单的页面布局开始,想想我们需要什么,一个带搜索事件的Button,还需要一些TextBlock来提示用户,核心部分自然是一个GridView咯. <Grid Background="Wheat"> <Grid.RowDefinitions> <RowDefinition Height=&q

Linux之bash shell特性

一.shell是什么? Shell 本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 如图shell是一个应用程序,是用户管理应用程序的一个接口. 二.广义上shell的分类 GUI:图形用户界面 KDE,GNOME,XFCE CLI:

solr教程

转载请注明出处:http://www.cnblogs.com/zhuxiaojie/p/5764680.html 本教程基于solr5.5 前言 至于为什么要用solr5.5,因为最新的6.10,没有中文的分词器支持,这里使用的是ik分词器,刚好支持到5.5 ik分词器下载地址 :https://github.com/EugenePig/ik-analyzer-solr5  , 下载完之后使用maven命令, mvn package 即可生成jar文件,或者下载我编译好的 http://pan.

class-2 Linux 入门

目录 1.系统初始 1.1 广播 1.2关机/重启命令 1.3配置信息 2.终端terminal以及交互式接口 2.1终端terminal 2.2交互式接口 3.用户登录 4.bash shell 5.命令提示符 6.命令分类,查找,别名,优先级 6.1 命令分类 6.2 命令查找 6.3 命令别名 6.4 命令优先级 7.安装VMware Tool 8.命令格式 9.简单命令date,cal,clock,hwclock 10.简单命令screen ,echo,文件名的颜色 10.1 安装scr

div+css实现各种形状(精心整理)

1.正方形.div {width: 100px;height: 100px;background: red;} 2.矩形.div {width: 200px;height: 100px;background: red;} 3.圆形.div {width: 100px;height: 100px;background: red;-moz-border-radius: 50px;-webkit-border-radius: 50px;border-radius: 50px;} 4.椭圆.div {w

Asp.net新闻列表生成静态页批量生成和单页生成

其实生成静态页的目的就是为了提高用户的体验度,访问速度快,这是最直接的目的.... 前期准备,需要新建一个文件夹..前台展示:/new/default.aspx  这个页面放的就是动态的新闻列表数据. 先看截图.. 上代码 这里要说明一下,我用的AspNetPager分页控件,需要设置一下 <webdiyer:AspNetPager ID="AspNetPager1" runat="server" FirstPageText="首页" La

solr安装与使用

转自::http://www.cnblogs.com/zhuxiaojie/p/5764680.html,谢谢博主分享 至于为什么要用solr5.5,因为最新的6.10,没有中文的分词器支持,这里使用的是ik分词器,刚好支持到5.5 ik分词器下载地址 :https://github.com/EugenePig/ik-analyzer-solr5  , 下载完之后使用maven命令, mvn package 即可生成jar文件,或者下载我编译好的 http://pan.baidu.com/s/1