UVA 572 Oil Deposits(DFS)
来源:互联网 发布:小蜜蜂软件 编辑:程序博客网 时间:2024/05/18 06:26
题目链接
题意
给出一个m行n列的矩阵,@字符表示油田,油田可以八连通,询问一共有几个八连块
解决
- 我想说对于两个月前(2017.07)的我,我也是连这种简单的DFS都不会的人(⊙o⊙)…
- 经过暑期集训会的东西多了好多好多,如果让我一个人学…怕是要完^_^
- 解决就是DFS深搜一下
- 遍历每一个是’@’的点,让ans+1
- 具体可以看下注释^_^
#include<bits/stdc++.h>using namespace std;int m,n;char maps[105][105];void dfs(int i,int j){ maps[i][j]='*'; //把@字符变成普通字符,要不搜索过程中可能会回退回来,变成无限循环。。。 int di,dj,ni,nj; for(int di=-1;di<=1;di++) { for(int dj=-1;dj<=1;dj++) //有的人喜欢用数组表示移动的方向,我喜欢这样子表示^_^ { ni=i+di;nj=j+dj; //如果是只能向四个方向移动,可以加一句if(di*dj!=0) continue; if(ni<0||nj<0||ni>m||nj>n) continue; //坐标合法性 //if(di*dj!=0) continue; if(maps[ni][nj]=='@') dfs(ni,nj); //接续搜索下一个位置 } }}int main(){ while(1) { int ans=0; scanf("%d%d",&m,&n); if(!m||!n) break; getchar(); for(int i=0;i<m;i++) scanf("%s",maps[i]); for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { if(maps[i][j]=='@') { dfs(i,j); ans++; //扫描到一个@之后,dfs函数会把与它相连的所有@都清空掉,所以每次便利到@都让ans+1 } } } cout<<ans<<endl; }}
阅读全文
0 0
- UVA 572 - Oil Deposits(DFS)
- UVa 572 - Oil Deposits (简单dfs)
- UVA - 572 Oil Deposits (dfs)
- UVA 572 Oil Deposits(DFS)
- UVa 572 Oil Deposits(DFS)
- UVa 572 Oil Deposits(DFS)
- Uva-572 - Oil Deposits(DFS)
- UVA 572Oil Deposits(DFS)
- Oil Deposits uva DFS
- uva 572 Oil Deposits(DFS遍历图)
- UVA - 572 - Oil Deposits (图的DFS!)
- uva 572 Oil Deposits(油田)—— DFS
- uva 572 Oil Deposits(dfs)-解题记录
- Uva 572 Oil Deposits 油田 (DFS求连通块)
- UVA 572- Oil Deposits(简单dfs)
- UVa 572 - Oil Deposits【图DFS】
- UVa 572 && Hdu1241 Oil Deposits【dfs】
- Oil Deposits(DFS)
- Mysql 安装
- JSP里的basePath
- c#窗体间传值
- HTML登录界面
- 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153 是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
- UVA 572 Oil Deposits(DFS)
- 「NOIP2017模拟赛09.07」虐场
- 二进制逻辑运算求解137. Single Number II
- JD2018校招神奇数,疯狂队列
- 使用泛型简化动态代理
- 条件传送指令
- Mac 配置 php-fpm 时出现'/private/etc/php-fpm.conf': No such file or directory (2)
- minScale、maxScale与visible的区别
- Java设计模式之普通工厂模式