hdoj2952【DFS联通块】
我觉得还是这种不带回溯的直接搜到底的好玩啊!!!但是要注意边界,记得以前四周要空出来的一道题目,被坑了很久,还是wa到比赛结束!!!这道还是基础题 
类似的基础题:POJ1562  hdoj1016  poj3051
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <iostream>
using namespace std;
#define LL __int64
#define N 110
int n,m;
char ma[N][N];
/*
void DFS(int x,int y)
{
    if(x<0||y<0||x>=n||y>=m)
        return;
    if(ma[x][y]=='#')
        ma[x][y]='.';
    else
        return;
    DFS(x-1,y);
    DFS(x+1,y);
    DFS(x,y+1);
    DFS(x,y-1);
}
*/
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
void DFS(int x,int y)
{
    for(int i=0;i<4;i++)
    {
        int aa=x+dx[i];
        int bb=y+dy[i];
        if(aa<0||bb<0||aa>=n||bb>=m||ma[aa][bb]=='.')
            continue;
        ma[aa][bb]='.';
        DFS(aa,bb);
    }
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&n,&m);
        for(int i=0;i<n;i++)
        {
            scanf("%s",ma[i]);
        }
        int ans=0;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(ma[i][j]=='#')
                {
                    ma[i][j]='.';
                    DFS(i,j);
                    ans++;
                }
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}hdoj2952【DFS联通块】的更多相关文章
- Educational Codeforces Round 5 - C. The Labyrinth (dfs联通块操作)
		题目链接:http://codeforces.com/contest/616/problem/C 题意就是 给你一个n行m列的图,让你求’*‘这个元素上下左右相连的连续的’.‘有多少(本身也算一个), ... 
- Codeforces277A 【dfs联通块】
		题意: 给出n个人会的语言类型,然后问这n个人里面还需要几个人学习一下语言就可以n个直接互通了.a会1,2,b会2,3,c会4,那么只要C学一下1或者2,或者3就好了...大致就是这个意思. 思路: ... 
- 引爆炸弹——DFS&&联通块
		题目 链接 在一个$n \times m$方格地图上,某些方格上放置着炸弹.手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去. 现在为了引爆地 ... 
- Codeforces Round #369 (Div. 2) D. Directed Roads dfs求某个联通块的在环上的点的数量
		D. Directed Roads ZS the Coder and Chris the Baboon has explored Udayland for quite some time. The ... 
- HDU - 1213 dfs求联通块or并查集
		思路:给定一个无向图,判断有几个联通块. AC代码 #include <cstdio> #include <cmath> #include <algorithm> ... 
- 【紫书】Oil Deposits UVA - 572  dfs求联通块
		题意:给你一个地图,求联通块的数量. 题解: for(所有还未标记的‘@’点) 边dfs边在vis数组标记id,直到不能继续dfs. 输出id及可: ac代码: #define _CRT_SECURE ... 
- 分别利用并查集,DFS和BFS方法求联通块的数量
		联通块是指给定n个点,输入a,b(1<=a,b<=n),然后将a,b连接,凡是连接在一起的所有数就是一个联通块: 题意:第一行输入n,m,分别表示有n个数,有输入m对连接点,以下将要输入m ... 
- 利用DFS求联通块个数
		/*572 - Oil Deposits ---DFS求联通块个数:从每个@出发遍历它周围的@.每次访问一个格子就给它一个联通编号,在访问之前,先检查他是否 ---已有编号,从而避免了一个格子重复访问 ... 
- 用dfs求联通块(UVa572)
		一.题目 输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块.如果两个字符所在的格子相邻(横.竖.或者对角线方向),就说它们属于同一个八连块. 二.解题思路 和前面的二叉树遍历类似,图也有DF ... 
随机推荐
- hud 1465、2049、2045  (递推)[含简单C(n,m) n!的写法]
			C - 不容易系列之一 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ... 
- 利用python暴力破解ssh
			# -*- coding:utf-8 -*- #python 2.7 import optparse,sys,threading import pexpect PROMPT = ['#','>' ... 
- unity视频播放,
			PC端视频播放: Unity中实现PC端播放视频,非常easy用到MovieTexture属于贴图Texture的子类. 在播放视频之前.我们得记得下载quicktime插件,仅仅有导入了quickt ... 
- 信雅达面试题atoi函数实现
			atoi函数: 功 能: 把字符串转换成整型数. 名字来源:ASCII to integer 的缩写. 原型: int atoi(const char *nptr); 函数说明 参数nptr字符串,如 ... 
- 每天一个JavaScript实例-apply和call的使用方法
			<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ... 
- DTD复习笔记(复习资料为菜鸟教程里的DTD教程)
			DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 为什么使用 DTD? 通过 DTD,您的每一个 XML 文件均可携带 ... 
- Ehcache CacheManager
			CacheManager是Ehcache框架的核心类和入口,它负责管理一个或多个Cache对象.要使用Ehcache框架,必须要先创建 CacheManager 对象.现在我们学习下,如何创建 Cac ... 
- 在C++中使用Libmd5计算字符串或文件的MD5值
			CppMD5Demo.cpp #include <iostream> #include <fstream> #include <chrono> #include & ... 
- Deep Learning 36:python中的一些函数
			1.map(function, sequence[, sequence, ...])函数:返回一个list作用:map的作用是以参数序列中的每一个元素调用function函数,返回包含每次functi ... 
- UICollectionView基础用法
			初始化部分: UICollectionViewFlowLayout *flowLayout= [[UICollectionViewFlowLayout alloc]init]; self.myColl ... 
