链接改天再补 杭电又崩了。。。

题意:求“@”组成了多少个联通区域,每个点的8个方向都认为是相连的

思路:对每一个点进行搜索 当Map == @ && vis == 0 时 可进入搜索 每次进入搜索时 ans++ 搜索时将该联通区域所有的点标记 8个方向搜

AC代码:

 #include "iostream"
#include "string.h"
#include "stack"
#include "queue"
#include "map"
#include "algorithm"
#include "stdio.h"
#include "math.h"
#define ll long long
#define mem(a) memset(a,0,sizeof(a))
#define max(a,b) a > b ? a : b
#define min(a,b) a < b ? a : b using namespace std; int d[][] = {{,},{,},{,-},{-,},{-,},{,},{,-},{-,-}};
bool vis[][];
bool Map[][]; struct Node
{
int xx,yy;
}; void Dfs(int x,int y)
{
stack<Node>S;
Node now,next;
now.xx = x;
now.yy = y;
vis[x][y] = ;
S.push(now); while(!S.empty())
{
now = S.top();
S.pop(); for(int i=; i<; i++)
{
next.xx = now.xx + d[i][];
next.yy = now.yy + d[i][]; if(Map[next.xx][next.yy] && !vis[next.xx][next.yy])
{
vis[next.xx][next.yy] = ;
S.push(next);
}
}
}
} int main()
{
int n,m,i,j,ans;
char c;
while(scanf("%d%d",&m,&n)&&(m||n))
{
mem(vis);
mem(Map);
ans = ;
for(i=; i<=m; i++)
for(j=; j<=n; j++)
{
cin>>c;
if(c=='@')
Map[i][j] = ;
if(c=='*')
Map[i][j] = ;
}
for(i=; i<=m; i++)
for(j=; j<=n; j++)
{
if(Map[i][j] && !vis[i][j])
{
ans++;
Dfs(i,j);
}
}
printf("%d\n",ans);
}
return ;
}

hdu1241 dfs的更多相关文章

  1. HDu1241 DFS搜索

    #include<iostream> #include<cstring> using namespace std; int a[105][105]; int d[8][2]={ ...

  2. HDU1241&POJ2386 dfs简单题

    2道题目都差不多,就是问和相邻所有点都有相同数据相连的作为一个联通快,问有多少个连通块 因为最近对搜索题目很是畏惧,总是需要看别人代码才能上手,就先拿这两道简单的dfs题目来练练手,顺便理一理dfs的 ...

  3. HDU-1241 Oil Deposits (DFS)

    Oil Deposits Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total ...

  4. Hdu1241 Oil Deposits (DFS)

    Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...

  5. HDU1241 Oil Deposits —— DFS求连通块

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1241 Oil Deposits Time Limit: 2000/1000 MS (Java/Othe ...

  6. HDU1241 - Oil Deposits【DFS】

    GeoSurvComp地质调查公司负责探测地下石油储藏. GeoSurvComp现在在一块矩形区域探测石油,并把这个大区域分成了很多小块.他们通过专业设备,来分析每个小块中是否蕴藏石油.如果这些蕴藏石 ...

  7. HDU1241 Oil Deposits(dfs+连通块问题)

    背景描述 ztw同志负责探测地下石油储藏.ztw现在在一块矩形区域探测石油.他通过专业设备,来分析每个小块中是否蕴藏石油.如果这些蕴藏石油的小方格相邻(横向相邻,纵向相邻,还有对角相邻),那么它们被认 ...

  8. poj 3620 Avoid The Lakes【简单dfs】

    Avoid The Lakes Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6795   Accepted: 3622 D ...

  9. 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)

    深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...

随机推荐

  1. 6个值得推荐的Android开源框架简介(转)

    虽然我们在做app的时候并不一定用到框架,但是一些好框架的思想是非常有学习价值的 1.volley 项目地址 https://github.com/smanikandan14/Volley-demo  ...

  2. WebStorm中将Project分享到GitHub时报“Error Running Git”错误的解决办法

    错误信息 Cannot run program "git.exe":CreateProcess error=2,系统找不到指定的文件. 解决办法 从错误信息就可以知道,WebSto ...

  3. Lucene.net 全文检索 盘古分词

    lucene.net + 盘古分词 引用: 1.Lucene.Net.dll 2.PanGu.Lucene.Analyzer.dll 3.PanGu.HighLight.dll 4.PanGu.dll ...

  4. 利用canvas实现抽奖转盘---转载别人的

    功能需求 转盘要美观,转动效果流畅. 转盘上需要显示奖品图片,并且奖品是后台读取的照片和名字. 转动动画完成后要有相应提示. 获取的奖品具体算法在数据库里操作,前端只提供最后的效果展示.   知识要点 ...

  5. php代码效率测试

    对于一个被加载的页面,而遇到会卡的原因 ,代码量大,为了减少一句话分析,就采用分段式判断. 从php手册了解到,使用microtime函数,具体方法可参见php手册对这函数的用法 定义get_exec ...

  6. Angular JS 学习之Http

    1.$http是AngularJS中的一个核心服务,用于读取远程服务器的数据: 2.读取JSON文件: **JSON文件如下: { "sites":[ { "Name&q ...

  7. UVA - 11488 字典树

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  8. EntityFramework Code First 手写代码实现生成数据库

    第一步:写实体类 第二步:写一个实体操作类,此类必须继承Dbcontext,此处的属性,将会在初始化时(第一次作,增,删,改的时候),生成相应的表. 第三步:运行程序,会自动建表 注意: 若实体类发生 ...

  9. Spring.Net Remoting 相关使用

    http://www.cnblogs.com/GoodHelper/archive/2009/11/19/SpringNet_Remoting.html  本博客系统转载  原文为 Spring.Se ...

  10. Android自动化测试 - MonkeyRunner(三) 随手练习测试脚本

    #coding=utf-8 import os import time #import MonkeyRunner three module from com.android.monkeyrunner ...