【DFS深搜初步】HDOJ-2952 Counting Sheep、NYOJ-27 水池数目
【题目链接:HDOJ-2952】
Counting Sheep
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2476 Accepted Submission(s): 1621
Creative as I am, that wasn't going to stop me. I sat down and wrote a computer program that made a grid of characters, where # represents a sheep, while . is grass (or whatever you like, just not sheep). To make the counting a little more interesting, I also decided I wanted to count flocks of sheep instead of single sheep. Two sheep are in the same flock if they share a common side (up, down, right or left). Also, if sheep A is in the same flock as sheep B, and sheep B is in the same flock as sheep C, then sheeps A and C are in the same flock.
Now, I've got a new problem. Though counting these sheep actually helps me fall asleep, I find that it is extremely boring. To solve this, I've decided I need another computer program that does the counting for me. Then I'll be able to just start both these programs before I go to bed, and I'll sleep tight until the morning without any disturbances. I need you to write this program for me.
Each test case begins with a line containing two numbers, H and W, the height and width of the sheep grid. Then follows H lines, each containing W characters (either # or .), describing that part of the grid.
Notes and Constraints
0 < T <= 100
0 < H,W <= 100
#include<iostream>
#include<cstring>
using namespace std;
const int MAXN = ;
int Map[MAXN][MAXN] = {};
int vis[MAXN][MAXN] = {};
int dfs(int a,int b){
if(Map[a][b] == || vis[a][b] == ) return ;
vis[a][b] = ;
//环顾四周
dfs(a - ,b); //下
dfs(a + ,b); //上
dfs(a,b - ); //左
dfs(a,b + ); //右
return ;
}
int main(){
int n;
cin >> n;
while(n--){
int a,b,i,j,sum = ;
memset(Map,,sizeof(Map));
memset(vis,,sizeof(vis));
cin >> a >> b;
for(i = ;i < a;i++){
for(j = ;j < b;j++){
char ac;
cin >> ac;
if(ac == '#')
Map[i][j] = ;
else Map[i][j] = ;
}
}
for(i = ;i < a;i++)
for(j = ;j < b;j++){
if(Map[i][j] == || vis[i][j] == )
continue;
else{ dfs(i,j);
sum++;
}
}
cout << sum << endl;
}
return ;
}
【题目链接:NYOJ-27】
可以说两题完全相似。
#include<iostream>
#include<cstring>
using namespace std;
const int MAXN = ;
int Map[MAXN][MAXN] = {};
int vis[MAXN][MAXN] = {};
int dfs(int a,int b){
if(Map[a][b] == || vis[a][b] == ) return ;
vis[a][b] = ;
//环顾四周
dfs(a - ,b); //下
dfs(a + ,b); //上
dfs(a,b - ); //左
dfs(a,b + ); //右
return ;
}
int main(){
int n;
cin >> n;
while(n--){
int a,b,i,j,sum = ;
memset(Map,,sizeof(Map));
memset(vis,,sizeof(vis));
cin >> a >> b;
for(i = ;i <= a;i++)
for(j = ;j <= b;j++){
cin >> Map[i][j];
}
for(i = ;i <= a;i++)
for(j = ;j <= b;j++){
if(Map[i][j] == || vis[i][j] == )
continue;
else{
sum++;
dfs(i,j);
}
}
cout << sum << endl;
}
return ;
}
【DFS深搜初步】HDOJ-2952 Counting Sheep、NYOJ-27 水池数目的更多相关文章
- NYOJ 27.水池数目-DFS求连通块
水池数目 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地 ...
- CodeM美团点评编程大赛初赛B轮 黑白树【DFS深搜+暴力】
[编程题] 黑白树 时间限制:1秒 空间限制:32768K 一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1.树上每个节点i对应一个值k[i].每个点都有一个颜色,初始的时候所有点都是白色 ...
- DFS 深搜专题 入门典例 -- 凌宸1642
DFS 深搜专题 入门典例 -- 凌宸1642 深度优先搜索 是一种 枚举所有完整路径以遍历所有情况的搜索方法 ,使用 递归 可以很好的实现 深度优先搜索. 1 最大价值 题目描述 有 n 件物品 ...
- poj 2386:Lake Counting(简单DFS深搜)
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18201 Accepted: 9192 De ...
- HDU 2952 Counting Sheep(DFS)
题目链接 Problem Description A while ago I had trouble sleeping. I used to lie awake, staring at the cei ...
- DFS深搜——Red and Black——A Knight's Journey
深搜,从一点向各处搜找到全部能走的地方. Problem Description There is a rectangular room, covered with square tiles. Eac ...
- Red and Black(DFS深搜实现)
Description There is a rectangular room, covered with square tiles. Each tile is colored either red ...
- UVA 165 Stamps (DFS深搜回溯)
Stamps The government of Nova Mareterrania requires that various legal documents have stamps attac ...
- hdu 2952 Counting Sheep
本题来自:http://acm.hdu.edu.cn/showproblem.php?pid=2952 题意:上下左右4个方向为一群.搜索有几群羊 #include <stdio.h> # ...
随机推荐
- 0327定时执行--存储过程--dbms_job--dbms_scheduler.create_job
--oracle job 定时执行 存储过程 --建一张测试表 create table Person( name ), sex ) ); / --创建测试的存储过程 create or replac ...
- uva 10131
DP 先对大象体重排序 然后寻找智力的最长升序子列 输出路径.... #include <iostream> #include <cstring> #include &l ...
- POJ 1740
#include <iostream> #define MAXN 100 using namespace std; int _m[MAXN]; bool mark[MAXN]; int m ...
- java基础知识回顾之java Socket学习(二)--TCP协议编程
TCP传输(传输控制协议):TCP协议是一种面向连接的,可靠的字节流服务.当客户端和服务器端彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能进行数据的传输.它将一台主机发出的字节流无差错的 ...
- C# 在vs2010中打开vs2012的项目(转)
在vs2010中打开vs2012的项目 今天在自己的电脑上装了vs2010然后要打开之前在vs2012上创建的sln文件 被提示-- 无法打开在新版本上创建的sln--解决方案--文件 其实vs201 ...
- SDUT2087离散事件模拟-银行管理
呃,这个题,我只想仰天长啸:无语死我了,还动用了繁和帅锅给我改,妹的,做题一定要仔细仔细再仔细啊,这种小错误都犯真是该打. 题目描述 现在银行已经很普遍,每个人总会去银行办理业务,一个好的银行是要考虑 ...
- DVB系统几种传输方式
卫星 (DVB-S 及 DVB-S2)有线 (DVB-C)地面无线 (DVB-T)手持地面无线 (DVB-H)
- lintcode 中等题:digits counts 统计数字
题目 统计数字 计算数字k在0到n中的出现的次数,k可能是0~9的一个值 样例 例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现 ...
- 各种分区类型对应的partition_Id
ID Name Note == ==== ==== 00h empty [空] 01h DOS 12-bit FAT [MS DOS FAT12] 02h XENIX root file system ...
- 使用exe4j把JAVA GUI程序打包成exe文件时遇到的问题
1.把项目打包成jar文件时,只要勾选src目录就行了,其他的比如资源文件和jar包是不能添加进去的. 2.在D盘建一个文件夹,最好与项目同名,然后把打包好的jar包放进去,其他资源文件(图片之类的) ...