HDU1241&POJ2386 dfs简单题
2道题目都差不多,就是问和相邻所有点都有相同数据相连的作为一个联通快,问有多少个连通块
因为最近对搜索题目很是畏惧,总是需要看别人代码才能上手,就先拿这两道简单的dfs题目来练练手,顺便理一理dfs的思路,分析清楚dfs的退出递归的条件和什么时候进行递归调用是至关重要的,这两道题目不涉及回溯,对于需要回溯的题目也要清楚分析,找到回溯条件,在对一个新的状态dfs时,后面加上回溯的语句
HDU1241代码:
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; int n,m,ans;
int visit[][],dir[][] = {{,},{-,},{,},{,-},{,},{,-},{-,},{-,-}};
char mat[][]; void dfs(int a,int b)
{
visit[a][b] = ;
for(int i=;i<;i++){
int xx = a+dir[i][];
int yy = b+dir[i][];
if(xx>=&&xx<n&&yy>=&&yy<m&&mat[xx][yy]=='@'){
if(!visit[xx][yy])
dfs(xx,yy);
}
}
}
int main()
{
while(~scanf("%d%d",&n,&m)){
if(n==&&m==) break; for(int i=;i<n;i++){
for(int j=;j<m;j++)
cin>>mat[i][j];
} memset(visit,,sizeof(visit));
ans = ; for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
if(!visit[i][j]&&mat[i][j] == '@')
{
dfs(i,j);
ans++;
}
} printf("%d\n",ans);
}
return ;
}
POJ2386代码:
#include <cstdio>
#include <cstring> using namespace std; #define N 102 int n,m,ans;
int visit[N][N],dir[][] = {{,},{-,},{,},{,-},{,},{,-},{-,},{-,-}};
char mat[N][N]; void dfs(int x,int y)
{
visit[x][y]=;
for(int i=;i<;i++){
int xx=x+dir[i][];
int yy=y+dir[i][];
if(xx>=&&x<n&&yy>=&&yy<m&&mat[xx][yy]=='W'&&!visit[xx][yy])
dfs(xx,yy);
}
} int main()
{
while(~scanf("%d%d",&n,&m)){
for(int i=;i<n;i++)
scanf("%s",mat[i]); memset(visit,,sizeof(visit));
ans=; for(int i = ;i<n;i++)
for(int j=;j<m;j++){
if(mat[i][j] == 'W'&&!visit[i][j])
{
dfs(i,j);
ans++;
}
} printf("%d\n",ans);
}
return ;
}
HDU1241&POJ2386 dfs简单题的更多相关文章
- test1.A[【dfs简单题】
Test1.A Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 sdut 2274:http://acm.sdut.edu.cn/ ...
- LeetCode Generate Parentheses 构造括号串(DFS简单题)
题意: 产生n对合法括号的所有组合,用vector<string>返回. 思路: 递归和迭代都可以产生.复杂度都可以为O(2n*合法的括号组合数),即每次产生出的括号序列都保证是合法的. ...
- Curling 2.0(DFS简单题)
题目链接: https://vjudge.net/problem/POJ-3009 题目描述: On Planet MM-21, after their Olympic games this year ...
- POJ 1321 棋盘问题(DFS板子题,简单搜索练习)
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44012 Accepted: 21375 Descriptio ...
- 【BZOJ】【4066】简单题(强制在线)
KD-Tree KD-Tree的进阶姿势戳这里 http://zyfzyf.is-programmer.com/posts/92431.html 为啥有种线段树&平衡树的即视感……(树形结构的 ...
- 【BZOJ1176】[Balkan2007]Mokia/【BZOJ2683】简单题 cdq分治
[BZOJ1176][Balkan2007]Mokia Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=1600 ...
- bzoj3687简单题(dp+bitset优化)
3687: 简单题 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 861 Solved: 399[Submit][Status][Discuss] ...
- 咸鱼的ACM之路:DFS水题集
DFS的核心就是从一种状态出发,转向任意的一个可行状态,直到达到结束条件为止.(个人理解) 下面全是洛谷题,毕竟能找到测试点数据的OJ我就找到这一个....在其他OJ上直接各种玄学问题... P159 ...
- BZOJ 2683: 简单题
2683: 简单题 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 913 Solved: 379[Submit][Status][Discuss] ...
随机推荐
- composer 加快更新速度
一.使用代理 set http_proxy=http://127.0.0.1:8087 //Windows export http_proxy=http://127.0.0.1:8087 //linu ...
- jmeter(十六)Jmeter之Bean shell使用(一)
一.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanS ...
- echart分组柱形图绑定数据
<!DOCTYPE html> <head> <meta charset="utf-8"> <title>ECharts </ ...
- T4870 水灾(sliker.cpp/c/pas) 1000MS 64MB
题目描述 大雨应经下了几天雨,却还是没有停的样子.土豪CCY刚从外地赚完1e元回来,知道不久除了自己别墅,其他的地方都将会被洪水淹没. CCY所在的城市可以用一个N*M(N,M<=50)的地图表 ...
- css中display设置为table、table-row、table-cell后的作用及其注意点
html: <div class="table"> <div class="row"> <div class="cell ...
- R in action读书笔记(21)第十六章 高级图形进阶(上)
16.1 R 中的四种图形系统 基础图形函数可自动调用,而grid和lattice函数的调用必须要加载相应的包(如library(lattice)).要调用ggplot2函数需下载并安装该包(inst ...
- select在数据库中有两种含义
select在数据库中有两种意思 (1)是赋值的意思(2)是输出,打印的意思我想你问的大概是赋值吧print和 select在数据库中都有打印输出的意思 用法是:select @aa=select* ...
- ASP.NET Excel下载方法一览
方法一 通过GridView(简评:方法比较简单,但是只适合生成格式简单的Excel,且无法保留VBA代码),页面无刷新 aspx.cs部分 using System; using System.Co ...
- 大众点评APP分析随笔
移动APP:大众点评 一.最核心功能:店铺评价功能,用户可以通过此功能对商家进行评分,也可以获取其他人对商家的评分信息. 二.核心功能满足的需求: 1. 去过商家消费的用户:用户已经体验的商家提供的产 ...
- sh InvocationTargetException
话题引入: 使用hibernate+struts框架开发项目时,使用占位符时,系统抛出如下异常: Exception: java.lang.reflect.InvocationTargetExcept ...