http://www.bnuoj.com/bnuoj/problem_show.php?pid=33656

【题解】:暴力搜索题

【code】:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue> using namespace std; char map[][];
int vis[][];
int n,m;
int B,F;
int cx[]={,-,,-,,-,,};
int cy[]={,,,-,-,,-,}; int isAllDog(int l,int r)
{
int i=l-,j=r-;
if(i>=&&j>=)
{
if(map[i][j]!='.') return ;
}
i=l-,j=r;
if(i>=)
{
for(;j<r+;j++)
{
if(map[i][j]!='.') return ;
}
}
i=l-,j=r+;
if(i>=&&j<m)
{
if(map[i][j]!='.') return ;
}
i=l,j=r-;
if(j>=)
{
if(map[i][j]!='.') return ;
}
i=l,j=r+;
if(j<m)
{
if(map[i][j]!='.') return ;
}
i=l+,j=r-;
if(i<n&&j>=)
{
if(map[i][j]!='.') return ;
}
i=l+,j=r;
if(i<n)
{
for(;j<r+;j++)
{
if(map[i][j]!='.') return ;
}
}
i=l+,j=r+;
if(i<n&&j<m)
{
if(map[i][j]!='.') return ;
}
return ;
} void seach_birds()
{
int i,j;
for(i=;i<n;i++)
{
for(j=;j<m-;j++)
{
if(map[i][j]=='/'&&map[i][j+]=='\\'&&map[i][j+]=='/'&&map[i][j+]=='\\')
{
if(isAllDog(i,j))
{
B++;
}
j+=;
}
}
}
} void seach_flower(int x,int y)
{
int i;
vis[x][y] = ;
for(i=;i<;i++)
{
int dx = x+cx[i];
int dy = y+cy[i];
if(dx>=&&dx<n&&dy>=&&dy<m&&!vis[dx][dy]&&map[dx][dy]!='.'&&map[dx][dy]!='=')
{
vis[dx][dy]=;
seach_flower(dx,dy);
}
}
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{ scanf("%d%d",&n,&m);
int i;
for(i=;i<n;i++)
{
scanf("%s",map[i]);
}
B=F=;
seach_birds();
memset(vis,,sizeof(vis));
for(i=;i<m;i++)
{
if(n->=&&map[n-][i]!='.'&&vis[n-][i]==)
{
seach_flower(n-,i);
F++;
}
}
printf("Flowers: %d\n",F);
printf("Birds: %d\n",B); // cout<<B<<endl;
}
return ;
}

bnuoj 33656 J. C.S.I.: P15(图形搜索题)的更多相关文章

  1. 【数位DP】bnuoj 52813 J. Deciphering Oracles

    http://acm.bnu.edu.cn/v3/contest_show.php?cid=9208#problem/J [AC] #include<bits/stdc++.h> usin ...

  2. 【第一部分】01Leetcode刷题

    一.二叉树的中序遍历 题目:94. 二叉树的中序遍历.94. Binary Tree Inorder Traversal 解法一: class Solution { public: vector< ...

  3. C语言打印图形

    //输出图形 * * * * * * * * * * * * * * * * * * * * * * * * * //每行5个* void test1(){ //    外层负责行,外层执行一次,内层 ...

  4. Java如何利用for循环在控制台输出正方形对角线图形

    1 /* 2 利用循环在控制台输出如下正方形对角线图形 3 * * * * * * * * * * * 4 * * * * 5 * * * * 6 * * * * 7 * * * * 8 * * * ...

  5. bnuoj 4187 GCC (数论)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=4187 [题意]:如题 [题解]:取n,m的最小值进行遍历就可以了: 注意 0 1 这组测试数据 [c ...

  6. 【codeforces.com/gym/100240 J】

    http://codeforces.com/gym/100240 J [分析] 这题我搞了好久才搞出样例的11.76....[期望没学好 然后好不容易弄成分数形式.然后我‘+’没打..[于是爆0... ...

  7. Codeforces Gym101606 J.Just A Minim (2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017))

    J Just A Minim 超级无敌大水题,但是被精度卡了一手,输出要精确到小数点后6位,我直接输出的... 代码: 1 #include<iostream> 2 #include< ...

  8. [游记]CSP 2021 J/S

    这一次,也许是我的OI生涯的转折点了--能过,学习OI的时间就不会减少:但不能过,就会减少学习OI的时间-- 上午(S组) 6:00起床.去吃早餐,结果因为边喝粥边喝牛奶导致肚子疼.(我在这里劝大家, ...

  9. 2016年江西理工大学C语言程序设计竞赛(初级组)

    问题 A: 木棒根数 解法:把所有的情况保存下来,加一下就好 #include<bits/stdc++.h> using namespace std; map<char,int> ...

随机推荐

  1. HTML+CSS学习笔记 (15) - css样式设置小技巧

    水平居中设置-行内元素 我们在实际工作中常会遇到需要设置水平居中场景,今天我们就来看看怎么设置水平居中的. 如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-align:c ...

  2. 利用 NUget包 EPPlus 实现数据导出到Excel(适用于DTcms)

    首先安装EPPlus 包

  3. WCF之事务

    2阶段提交协议. 事务先提交给协调者,由协调者分发给各个RM,在一段规定的时间后.由RM询问各个RM是否提交还是终止操作.RM根据自己的状态来决定提交/终止.协调者根据RM的结果,决定操作的提交/终止 ...

  4. (转)国内外三个不同领域巨头分享的Redis实战经验及使用场景

    随着应用对高性能需求的增加,NoSQL逐渐在各大名企的系统架构中生根发芽.这里我们将为大家分享社交巨头新浪微博.传媒巨头Viacom及图片分享领域佼佼者Pinterest带来的Redis实践,首先我们 ...

  5. 10款让你心动的 HTML5 & CSS3 效果

    这里集合的这组 HTML5 & CSS3 效果,有的是网站开发中常用的.实用的功能,有的是先进的 Web 技术的应用演示.不管哪一种,这些案例中的技术都值得我们去探究和学习. 1.超炫的 HT ...

  6. OpenGL第15,16,17讲小结

    这三讲没有什么特别的感觉,15讲把纹理贴到3D字体上,16讲讲了雾的生成,17讲是通过以事先保存好的纹理贴图的字体来显示2D文字,这样子不用调用windows的字体,而是使用纹理中的字体.这样也在一定 ...

  7. C++ 双链表基本操作

    上一篇博客主要总结了单向链表,这次再总结一下双向链表. 1.概念 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都 ...

  8. [windows phone开发]新生助手的开发过程与体会二

    上一讲咱们谈了新生助手主页的基本的设计,今天我们谈一谈关于展现实景地图时等动画的设计,即Storyboard的应用. 在Windows phone中,Storyboard类表示通过时间线控制动画,并为 ...

  9. MySQL基于实例sales创建自定义函数、视图、存储过程及触发器

    实例:数据库sales 1.客户表(Customer) 客户编号(CusNo) 姓名(CusName) 地址(Address) 电话(Tel) C001 杨婷 北京 010-5328953 C002 ...

  10. 【风马一族_Android】手机与电脑通过adb进行连接

    1:打开电脑的命令行 cmd 2:adb devices 查看与电脑连接的手机或模拟器的名称 3:准备要安装的apk.记住手机的名称 4:adb –s <模拟器名称> install  & ...