Lake Counting_深度搜索_递归
|
Lake Counting
Description Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water ('W') or dry land ('.'). Farmer John would like to figure out how many ponds have formed in his field. A pond is a connected set of squares with water in them, where a square is considered adjacent to all eight of its neighbors.
Given a diagram of Farmer John's field, determine how many ponds he has. Input * Line 1: Two space-separated integers: N and M
* Lines 2..N+1: M characters per line representing one row of Farmer John's field. Each character is either 'W' or '.'. The characters do not have spaces between them. Output * Line 1: The number of ponds in Farmer John's field.
Sample Input 10 12 Sample Output 3 Hint OUTPUT DETAILS:
There are three ponds: one in the upper left, one in the lower left,and one along the right side. Source |
[Submit] [Go Back] [Status] [Discuss]
感觉自己一直没有系统的训练,从网上买了一本挑战程序设计竞赛,开始挨着刷题,这是第一道。
#include <iostream>
#include <cstdio> #define L 120 using namespace std; int n,m;
char a[L][L];
int dx[]={,,,,,-,-,-};
int dy[]={,,,-,-,-,,}; void dfs(int x,int y){
a[x][y]='.';
for(int i=;i<;i++){ int t=x+dx[i];
int t2=y+dy[i];
if(a[t][t2]=='W' && t>= && t<n && t2>= &&t2<m){
dfs(t,t2);
}
}
} int main()
{
int cou=;
while(~scanf("%d %d",&n,&m)){
getchar();
cou=;
for(int i=;i<n;i++){
for(int j=;j<m;j++){
scanf("%c",&a[i][j]);
}
getchar();
}
for(int i=;i<n;i++){
for(int j=;j<m;j++){
if(a[i][j]=='W'){
dfs(i,j);
cou++;
}
}
}
printf("%d\n",cou); }
return ;
}
Lake Counting_深度搜索_递归的更多相关文章
- 【动态规划】skiing_深度搜索_动态规划
问题 B: [动态规划]skiing 时间限制: 1 Sec 内存限制: 128 MB提交: 28 解决: 11[提交][状态][讨论版] 题目描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪 ...
- #C++初学记录(深度搜索#递归)
深度搜索 走地图的题目是深度搜索里比较容易理解的题目,更深层次的是全排列和七皇后等经典题目,更加难以理解,代码比较抽象. 题目:红与黑 蒜厂有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖. ...
- 深度优先搜索(DFS)递归形式改为非递归形式
DFS将递归改为非递归这个方法的需求来自于一道三维积木组合的题目,还在苦苦调试中,暂且不提. 普通的认识对于递归向非递归的转化无非是使用栈,但是结合到深度搜索如何将栈很好利用,如何很好保存现场,都不是 ...
- #C++初学记录(算法测试2019/5/5)(深度搜索)
深度搜索:Oil Deposits GeoSurvComp地质调查公司负责探测地下石油储藏. GeoSurvComp现在在一块矩形区域探测石油,并把这个大区域分成了很多小块.他们通过专业设备,来分析每 ...
- F - 蜘蛛牌(深度搜索)
Problem Description 蜘蛛牌是windows xp操作系统自带的一款纸牌游戏,游戏规则是这样的:只能将牌拖到比她大一的牌上面(A最小,K最大),如果拖动的牌上有按顺序排好的牌时,那么 ...
- 双卡双待支持双电池 夏新N808深度评测_夏新手机评测-泡泡网
双卡双待支持双电池 夏新N808深度评测_夏新手机评测-泡泡网 双卡双待支持双电池 夏新N808深度评测
- 算法基础_递归_求杨辉三角第m行第n个数字
问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好) ...
- 题目--oil Deposits(油田) 基础DFS(深度搜索)
上一次基本了解了下BFS,这次又找了个基本的DFS题目来试试水,DFS举个例子来说就是 一种从树的最左端开始一直搜索到最底端,然后回到原端再搜索另一个位置到最底端,也就是称为深度搜索的DFS--dep ...
- 2018ICPC徐州区域赛网络赛B(逆序枚举或者正序深度搜索)
#include<bits/stdc++.h>using namespace std;int n,m,k,l;int x[1007],y[1007],z[1007];int dp[1007 ...
随机推荐
- Django 部署
话说这个部署挺折腾人的,先开始使用 mod_python ,貌似版本一直有问题,没成功过,以后再试. 使用 mod_wsgi 成功,记录如下: 1.下载 mod_wsgi: http://code.g ...
- 迷你版Deferred
直接贴代码: /** * 迷你版的deferred */ function Deferred(func) { if (this instanceof Deferred === false) { ret ...
- 【CISP笔记】安全攻击与防护
公开信息收集-搜索引擎 快速定位Google 搜索“5sf67.jsp”可以找到存在此脚本的Web网站Google 搜索“teweb/default.htm”就可找到开放着远程Web连接的服务器信息挖 ...
- TTFB-首字节时间简介
百度站长工具里看到有一个"首字节时间"的建议,第一次听说,还真不知道是什么东东.百度站长工具里面的解释是:"浏览器开始收到服务器响应数据的时间=后台处理时间+重定向时间, ...
- firstchild.data与childNodes[0].nodeValue意思(转)
x.firstchild.data:获取元素第一个子节点的数据: x.childNodes[0]::获取元素第一个子节点; x.childNodes[0].nodeValue.:也是获取元素第一个子节 ...
- LUXURY 7
A.Little Pony and Expected Maximum Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:% ...
- struts2-(1)使用Filter作为控制器
1.使用filter作为控制器 (1)创建类,实现javax.servlet.Filter package com.controller.filter; import java.io.IOExcept ...
- unity销毁层级物体及 NGUI 深度理解总结
http://www.2cto.com/kf/201311/258811.html 1.想找到层级面板中某个物体,并销毁,利用下面的代码: GameObject obj = GameObjec ...
- UIMenuController使用
- (void)bubbleDidLongPress:(UILongPressGestureRecognizer *)gestureRecognizer { if(gestureRecognizer. ...
- CSS3-transform,2D动画实例
对元素进行移动.缩放.转动.拉长 或 拉伸 全部都需要加前缀. Transform-2D转换方法:rotate()旋转.scale()缩放.skew()扭曲/倾斜.translate()位移.matr ...