hdu 1241 Oil Deposits(水一发,自我的DFS)

解题思路:
1. 遍历扫描二维数组,遇到‘@’,结果ans++;
2. 将当前 i,j 位置置为‘*’,将当前‘@’的 i,j 传人到DFS函数中,开始遍历八个方向的字符
如果碰到 '@' 则先将当前置为‘*’,然后再次递归传递,直到超出界限或者扫描不到‘@’,结束递归
3. DFS()的作用是将i,j为开始周围连续的“@”全部改为‘*’
4. 最后输出 ans 即可;
Ac code :
#include<bits/stdc++.h>
using namespace std;
char xstr[][];
static int ans;
int x,y;
void dfs(int i,int j)
{ if(j+<y&&xstr[i][j+]=='@')
{
xstr[i][j+]='*';
dfs(i,j+);
}
if(i+<x&&j->=&&xstr[i+][j-]=='@')
{
xstr[i+][j-]='*';
dfs(i+,j-);
}
if(i+<x&&xstr[i+][j]=='@')
{
xstr[i+][j]='*';
dfs(i+,j);
}
if(i+<x&&j+<y&&xstr[i+][j+]=='@')
{
xstr[i+][j+]='*';
dfs(i+,j+);
}
if(i->=&&j+<y&&xstr[i-][j+]=='@')
{
xstr[i-][j+]='*';
dfs(i-,j+);
}
if(j->=&&xstr[i][j-]=='@')
{
xstr[i][j-]='*';
dfs(i,j-);
}
if(i->=&&xstr[i-][j]=='@')
{
xstr[i-][j]='*';
dfs(i-,j);
}
if(i->=&&j->=&&xstr[i-][j-]=='@')
{
xstr[i-][j-]='*';
dfs(i-,j-);
}
}
int main()
{ while(scanf("%d%d",&x,&y)!=EOF&&x+y)
{
ans=;
memset(xstr,,sizeof(xstr));
int i,j;
for(i=; i<x; i++)
{
scanf("%s",&xstr[i]);
}
for(i=; i<x; i++)
{
for(j=; j<y; j++)
{
if(xstr[i][j]=='@')
{
xstr[i][j]='*';
ans++;
dfs(i,j);
}
}
}
printf("%d\n",ans);
}
return ;
}
hdu 1241 Oil Deposits(水一发,自我的DFS)的更多相关文章
- HDU 1241 Oil Deposits(石油储藏)
HDU 1241 Oil Deposits(石油储藏) 00 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Probl ...
- HDU 1241 Oil Deposits --- 入门DFS
HDU 1241 题目大意:给定一块油田,求其连通块的数目.上下左右斜对角相邻的@属于同一个连通块. 解题思路:对每一个@进行dfs遍历并标记访问状态,一次dfs可以访问一个连通块,最后统计数量. / ...
- hdu 1241 Oil Deposits(DFS求连通块)
HDU 1241 Oil Deposits L -DFS Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & ...
- HDOJ(HDU).1241 Oil Deposits(DFS)
HDOJ(HDU).1241 Oil Deposits(DFS) [从零开始DFS(5)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...
- DFS(连通块) HDU 1241 Oil Deposits
题目传送门 /* DFS:油田问题,一道经典的DFS求连通块.当初的难题,现在看上去不过如此啊 */ /************************************************ ...
- hdu 1241:Oil Deposits(DFS)
Oil Deposits Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total ...
- HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 1241 Oil Deposits (DFS/BFS)
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- HDOJ/HDU 1241 Oil Deposits(经典DFS)
Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...
随机推荐
- Microsoft Visual Studio 正忙
简介:Microsoft Visual Studio 正忙,Microsoft Visual Studio 正在等待内部操作完成.如果经常在正常使用的情况下遇到此延迟, 请向Microsoft报告此情 ...
- js实现网页防止被iframe框架嵌套及几种location.href的区别
首先我们了解一下几种location.href的区别简单的说:几种location.href的区别js实现网页被iframe框架功能,感兴趣的朋友可以了解下 首先我们了解一下:window.locat ...
- scrapy 代理
说明: 本文参照了官网文档,以及stackoverflow的几个问题 概要: 在scrapy中使用代理,有两种使用方式 使用中间件 直接设置Request类的meta参数 方式一:使用中间件 要进行下 ...
- Android:30分钟弄明白Touch事件分发机制
Touch事件分发中只有两个主角:ViewGroup和View.Activity的Touch事件事实上是调用它内部的ViewGroup的Touch事件,可以直接当成ViewGroup处理. View在 ...
- js字符串截取函数slice()、substring()、substr()
摘要 在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与 ...
- LeetCode:Word Break(DP)
题目地址:http://oj.leetcode.com/problems/word-break/ 简单的动态规划问题,采用自顶向下的备忘录方法,代码如下: class Solution { publi ...
- LINUX第五次实验报告
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级: 201353 姓名:刘世鹏 郝爽 学号:2013530 ...
- RedHat版的linux安装yum源及redis
一.前言 最近正在学习redis,但是在安装redis的时候遇到很多坎,在此记录一下. 硬件环境:我用 VMware Workstation Pro 12 安装 Red Hat Enterprise ...
- diff: /../Podfile.lock: No such file or directory
从github上下载源码运行会报错:问题1描述: diff: /../Podfile.lock: No such file or directory diff: /Manifest.lock: No ...
- SQL 语句大全
转载:http://www.cnblogs.com/yubinfeng/archive/2010/11/02/1867386.html 经典SQL语句大全 一.基础 1.说明:创建数据库 CREATE ...