深度搜索DFS-Lake Counting(POJ NO.2386)
来源:互联网 发布:会计核算软件 编辑:程序博客网 时间:2024/06/01 07:25
题目链接POJ NO.2386
解题思路:
这个也是一个dfs 的应用,在书上的例子,因为书上的代码并不全,基本都是函数分块来写,通过这个题目也规范了代码,以后能用函数的就都用函数
来实现吧。采用深度优先搜索
,从任意的w开始,不断把邻接的部分用'.'代替
,1次DFS后与初始这个w连接的所有w就全都被替换成'.',因此直到图中不再存在W为止,总共进行DFS的次数
就是答案。8个
方向对应8个状态转移,每个格子作为DFS的参数最多调用一次,因此时间复杂度为O(8nm)=O(nm)。
AC 代码:
#include <iostream> #include<cstdio> using namespace std;#define maxn 105 char field[maxn][maxn];//园子int n, m;void dfs(int x, int y){ //将现在所在位置替换为. field[x][y] = '.'; //循环遍历八个方向 for (int dx = -1; dx <= 1; dx++) {//向x方向一定dx,向y方向移动dy,移动结果为(nx,ny) for (int dy = -1; dy <= 1; dy++) { int nx = x + dx, ny = y + dy;//x,y 都是原来的坐标 //判断(nx,ny)是否在园子里,以及是否有积水 if (0 <= nx&&nx<n && 0 <= ny&&ny<m&&field[nx][ny] == 'W') { dfs(nx, ny); } } }}void solve(){ int res = 0; for (int i = 0; i<n; i++) { for (int j = 0; j<m; j++) { if (field[i][j] == 'W') { //从有积水的地方开始深搜 dfs(i, j); res++; } } } printf("%d\n", res);}int main(){ scanf("%d%d", &n, &m);//n是行,m是列 for (int i = 0; i<n; i++) //仅仅是一个二维数组的输入 { for (int j = 0; j<m; j++) { cin >> field[i][j]; } } solve();//这样写很好,函数分块 return 0;}
通过这个题目进一步加深了对dfs算法的理解,最重要的是以后可以很好的还原书上的代码(开心),只要用一个main 函数把基本的输入格式弄好就好了,自己还是很弱啊,继续加油吧
阅读全文
0 0
- 深度搜索DFS-Lake Counting(POJ NO.2386)
- 深度搜索DFS-Lake Counting(POJ NO.2386)
- Lake Counting (POJ No.2386) DFS
- lake counting---dfs(深度搜索算法)
- Lake Counting(DFS) POJ No.2386
- POJ-lake counting-No.2386-DFS
- poj 2386 Lake counting(深度优先搜索)
- POJ 2386 Lake Counting(深度优先搜索)
- poj 2386Lake Counting(DFS, BFS)
- POJ 2386 Lake Counting(DFS)
- POJ 2386 Lake Counting (DFS)
- poj 2386Lake Counting(dfs)
- POJ 2386 Lake Counting(DFS)
- POJ 2386 Lake Counting(dfs)
- POJ 2386 Lake Counting(dfs)
- POJ 2386 Lake Counting(简单dfs)
- POJ 2386 Lake Counting (DFS)
- poj 2386 Lake Counting(dfs)
- Python的星号(*、**)的作用
- 剑指offer——35.数组中的逆序对
- C#用Graphics书写文字时计算字符串所占的像素单位大小
- [Java--加密算法]--base64加密的算法实现
- Navicat实现Mysql手动备份与自动备份
- 深度搜索DFS-Lake Counting(POJ NO.2386)
- URI类与URL类概述与实例
- 12. Integer to Roman
- spring-retry简单例子
- 我对知乎前端相关问题的十问十答
- android studio debug
- Leetcode135——Candy
- 第一篇博客
- 把Bitmap转换成.bmp文件并保存——代码