春天到了,师大的园丁们又开始忙碌起来了.

京师广场上有一块空地,边界围成了一个多边形,内部被划分成一格一格的.园丁们想在这个多边形内的每一格内种植一些花.

现在请你帮忙计算一下一共最多可以种多少花.

广场用一个M*N的字符数组表示,"."和"*"代表一个方格,其中"*"代表空地的边界,"."是空格,只有边界内部的空格才能用于种花.
一个空格位于边界内部,当且仅当由该点出发只允许向上、下、左、右四个方向移动,最终都会遇到边界。

例如下面就是一个6*7的广场

.......
..***..
..*..*.
..*..*.
...**..
.......

种花方案如下(数字代表的地方)
.......
..***..
..*12*.
..*34*.
...**..
.......

 

Input

输入数据第一行是M和N(M和N不超过100),代表有广场的大小
接下来就是一个M*N的字符矩阵,是广场的表示

 

Output

对应于输入数据,输出一个整数,给出输入的情形能够种的花数目.

 

Sample Input

Sample Input1
6 7
.......
..***..
..*..*.
..*..*.
...**..
.......
Sample Input2
5 7
.......
..***..
..*.*..
..***..
.......

Sample Output

Sample Output1
4
Sample Output2
1
 #include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int map[][];
int dirx[]={,-,,};
int diry[]={,,-,};
int m,n;
int dfs(int x,int y)
{
int i,j,dx,dy;
if(x<||x>m+||y<||y>n+||map[x][y]==)
return ;
map[x][y]=;
for(i=;i<;i++)
{
dx=x+dirx[i];
dy=y+diry[i];
dfs(dx,dy);
}
return ;
}
int main()
{
int i,j;
//freopen("in.txt","r",stdin);
while(cin>>m>>n)
{
char s;
bool flag=;
int sum=;
memset(map,,sizeof(map));
for(i=;i<=m;i++)
{
for(j=;j<=n;j++)
{
cin>>s;
map[i][j]=(s=='.'?:);
}
}
dfs(,);
for(i=;i<=m;i++)
{
for(j=;j<=n;j++)
if(map[i][j])
sum++;
}
cout<<m*n-sum<<endl;
}
}

BNUOJ flower (搜索)的更多相关文章

  1. bnuoj 33656 J. C.S.I.: P15(图形搜索题)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=33656 [题解]:暴力搜索题 [code]: #include <iostream> # ...

  2. bnuoj 31796 键盘上的蚂蚁(搜索模拟)

    http://www.bnuoj.com/bnuoj/contest_show.php?cid=2876#problem/31796 [题意]: 如题,注意大小写情况 [code]: #include ...

  3. BNUOJ 52325 Increasing or Decreasing 数位dp

    传送门:BNUOJ 52325 Increasing or Decreasing题意:求[l,r]非递增和非递减序列的个数思路:数位dp,dp[pos][pre][status] pos:处理到第几位 ...

  4. bnuoj 1071 拼图++(BFS+康拓展开)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=1071 [题意]:经过四个点的顺逆时针旋转,得到最终拼图 [题解]:康拓展开+BFS,注意先预处理,得 ...

  5. BNUOJ-29358 Come to a spring outing 搜索,DP

    题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=29358 状态虽然很多,但是非常稀疏,dfs搜索然后剪下枝.. 或者DP,f[i][j][k ...

  6. UVALIVE 5893 计算几何+搜索

    题意:很复杂的题意,我描述不清楚. 题目链接:http://acm.bnu.edu.cn/bnuoj/contest_show.php?cid=3033#problem/33526 大致是,给定一个起 ...

  7. BNUOJ 12756 Social Holidaying(二分匹配)

    题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=12756 Social Holidaying Time Limit: 3000ms Memo ...

  8. 搜索水题四连发_C++

    特别声明:以下题目有部分为原创题,涉及版权问题,不得转载,违者追究 法律责任! 话说这是一套神题,只有你想不到,没有你做不到 题目更正后比 Pascal 跑得还快哈~ 一道特别裸,但是特别坑的搜索题 ...

  9. matlab查找最临近搜索knnsearch

    Idx = knnsearch(X,Y) finds the nearest neighbor in X for each query point in Y and returns the indic ...

随机推荐

  1. C# .net Jquery ajax 简单示例

    jquery中ajax相信大家都不陌生,这里只写个简单例子示意用法,详细后续再写. 在html中按钮事件中添加如下js var param = "data=" + escape($ ...

  2. linux源码安装nodejs

    如何在linux上安装nodejs环境 到网下载安装文件node-v5.10.1-linux-x64.tar.gz.   将源码包上传到linux的/usr/local/node/目录下,在该目录下解 ...

  3. C 程序提升效率的10种方法

    本文向你介绍规范你的C代码的10种方法(引用地址http://forum.eepw.com.cn/thread/250025/1).   1. 避免不必要的函数调用 考虑下面的2个函数: void s ...

  4. Ubuntu mysql中文乱码解决

    #vim /etc/mysql/my.cnf 找到[mysqld]添加 character-set-server = utf8 重启mysql #restart mysql mysql> sho ...

  5. LeetCode_Simplify Path

    Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", ...

  6. Populating Next Right Pointers in Each Node II 解答

    Question Follow up for problem "Populating Next Right Pointers in Each Node". What if the ...

  7. poj 2342 Anniversary party_经典树状dp

    题意:Ural大学有n个职员,1~N编号,他们有从属关系,就是说他们关系就像一棵树,父节点就是子节点的直接上司,每个职员有一个快乐指数,现在要开会,职员和职员的直接上司不能同时开会,问怎才能使开会的快 ...

  8. javascript 将递归转化为循环

    function tco(f) { var value; var active = false; var accumulated = []; return function accumulator() ...

  9. Java单元测试:@BeforeClass,@Before,@Test,@After,@AfterClass中的问题详解

    在Junit4中还有的测试注解有:  @BeforeClass ,@Before,@Test,@After,@AfterClass 1.其中:@BeforeClass,@AfterClass是Juni ...

  10. New Year Table(几何)

    New Year Table Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Sub ...