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] ...
随机推荐
- javascript:void(0)与#区别
javascript:void(0) 鼠标点击时,不会跳转到其他页面,且停留在原地 # 鼠标点击时,不会跳转到其他页面,但会回到顶部
- 员工管理系统(集合与IO流的结合使用 beta2.0 ObjectInputStream/ ObjectOutputStream)
package cn.employee; import java.io.Serializable; public class Employee implements Serializable{ pri ...
- 201 Bitwise AND of Numbers Range 数字范围按位与
给定范围 [m,n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含m, n两端点).例如,给定范围 [5,7],您应该返回 4. 详见 ...
- idea 部署struts所遇到的问题\
1.org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 加载失败 解决方法:下载struts2 的源码包,然后将D:\ ...
- ibatis 的sqlMap 的xml 关注点
1.当有特殊字符时候需要保持原状 eg:特殊字符 <> 错误:t.name<>' ' 会报The content of elements must consist of ...
- linux命令useradd添加用户
linux命令useradd添加用户详解 1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起始目录,使用权限是超级用户. 2.格式 useradd [-d home] [-s ...
- MSSQL 重新生成索引,重新组织索引
> 5% 且 < = 30% ALTER INDEX REORGANIZE > 30% ALTER INDEX REBUILD WITH (ONLINE = ON)* * 重新生成索 ...
- Android(java)学习笔记189:ContentProvider使用(银行数据库创建和增删改查的案例)
1. Android的四大组件: (1)Activity 用户交互的UI界面 (2)Service 后台运行的服务 (3)BroadcastReceiver 广播接收者 (4)ContentPro ...
- h5混编问题总结
h5混编总结: 1.fragment 格式错误导致跳转混乱的问题:修改格式: 2.有缓存回退js不执行问题:未解决: 3.无缓存跨域回退白屏问题:解决跨域问题. 4.
- 安卓 Android 简单数据库(增删改查)
<Button android:id="@+id/delete_btn" android:layout_width="wrap_content" andr ...