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] ...
随机推荐
- 对dynamic和lambda的学习
var, object, dynamic的区别以及使用 dynamic(2) – ExpandoObject的使用 .NET中的Lambda表达式与匿名方法
- Oracle报错:"ORA-18008: 无法找到 OUTLN 方案 "的解决方案
Oracle报错:"ORA-18008: 无法找到 OUTLN 方案 "的解决方案 今天连接到Oracle报错:ORA-18008: 无法找到 OUTLN 方案,前天还用得 ...
- 219 Contains Duplicate II 存在重复 II
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使 nums [i] = nums [j],并且 i 和 j 的绝对差值最大为 k. 详见:https://leetcod ...
- office doc/xls/ppt 和 docx/xlsx/pptx 区别
经同事告诉,今天才真正明白两都区别: doc/xls/ppt 是office2007以前的扩展名: docx/xlsx/pptx 是office2007版本及以后的扩展名,是基于xml的文件格式,x ...
- AJPFX关于static总结
static 总结 static Fields static Methods static member class static initializer-- ...
- AJPFX: Java基础多线程(一)
多线程是Java学习的非常重要的方面,是每个Java程序员必须掌握的基本技能.本文只是多线程细节.本质的总结,并无代码例子入门,不适合初学者理解.初学者学习多线程,建议一边看书.看博文,以便写代码尝试 ...
- .NET 出现参数化查询 需要参数但未提供该参数的错误
1.问题的来源 在.NET或者C#中,我们一般执行sql语句的话,推荐使用参数化查询,这样可以避免sql注入的攻击,但是,我在使用参数化查询的时候 出现了以下的错误,详细如下图: 图一这是写sql语句 ...
- iOS----时间日期处理
时间日期处理 1.NSDateFormatter 日期格式化 ①可以把NSString 类型转为 NSDate类型 举例 把 "2015-08-23 19:46:14" 转为NSD ...
- OpenFlow_tutorial_1_Introduce
tutorial出处:https://github.com/mininet/openflow-tutorial/wiki OpenFlow是用于远程控制交换机流表(forwarding tables) ...
- laravel如何自定义控制器目录
默认控制器在App\Http\Controllers目录下,如何自定义目录呢? 首先我们看一下laravel的请求周期 我们看一下服务提供者RouteServicePrivder文件中的一个函数 /* ...