hdu 2952 Counting Sleep (深度搜索)
来源:互联网 发布:高性能笔记本 编程 编辑:程序博客网 时间:2024/06/11 09:21
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2952
分析:题目要求求羊的区域个数,就是不相邻的羊有几个区域,相邻算一个。直接从每一个点深度优先搜索,在搜索的过程中,把搜索过的以及所有相邻的点全部更改状态,这样可以不用标记数组,注意需要搜索四个方向。
#include<cstdio>#include<iostream>#include<cstdlib>#include<algorithm>#include<cstring>using namespace std;const int N=105;char a[N][N];//存图,直接更改状态即可,不用标记数组int dd[4][2]={0,1,1,0,0,-1,-1,0};int m,n;void dfs(int x,int y){ int i; for(i=0;i<4;i++) { int sx=x+dd[i][0]; int sy=y+dd[i][1]; if(sx>=0&&sx<n && sy>=0 && sy<m && a[sx][sy]=='#') { a[sx][sy]='.'; dfs(sx,sy); } }}int main(){ int i,j; int t; int cnt; scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); scanf("%d%d%*c",&n,&m); for(i=0;i<n;i++) { for(j=0;j<m;j++) scanf("%c",&a[i][j]); getchar(); } cnt=0; for(i=0;i<n;i++) for(j=0;j<m;j++) if(a[i][j]=='#') { cnt++; a[i][j]='.';//更改标记,已经访问 dfs(i,j); } printf("%d\n",cnt); } return 0;}
1 0
- hdu 2952 Counting Sleep (深度搜索)
- HDU 2952 Counting Sheep (深度搜索)
- HDU 2952 Counting Sheep(搜索题目)
- Lake Counting --- 深度优先搜索
- Late Counting (POJ 2386) 深度优先搜索
- DFS深度优先搜索之lake counting
- lake counting---dfs(深度搜索算法)
- HDU 5952 Counting Cliques 暴力搜索
- HDU-5952-Counting Cliques(搜索剪枝)
- -----暴力搜索-hdu 5952 Counting Cliques
- HDU 2952 Counting Sheep
- hdu 2952 Counting Sheep
- hdu-2952-Counting Sheep
- hdu 2952 Counting Sheep
- hdu 2952Counting Sheep
- HDU 2952 Counting Sheep
- hdu 2952 Counting Sheep
- HDU 2952 Counting Sheep
- PHP底层的运行机制与原理
- 设计模式学习笔记——状态模式
- RuntimeException和Exception区别
- 7.5 Javascript:表单验证-正则补充
- 读书笔记 - Windows程序设计(滚动条)
- hdu 2952 Counting Sleep (深度搜索)
- Android 如何获取一个layout实例
- c++单例模式
- Oracle归档日志管理
- 关于Hibernate中的update报org.hibernate.HibernateException: No Session found for current thread
- Android RecyclerView使用简单介绍
- 解决项目开发过程中JS 缓存问题
- Java二分查找
- Android 如何在一个layout中引用另一个layout