dfs 算法

Problem DescriptionThe GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It then analyzes each plot separately, using sensingequipment to determine whether or not the plot contains oil. A plot containing oil is called a pocket.If two pockets are adjacent, then they are part of the same oil deposit. Oil deposits can be quite largeand may contain numerous pockets. Your job is to determine how many different oil deposits are contained in a grid

#include<cstdio>
int dir[8][2]={{0,-1},{0,1},{-1,0},{1,0},{-1,-1},{1,-1},{-1,1},{1,1}};
char map[100][100];
int count;
int m,n;
void dfs(int x,int y)
{    int i=0;
    if(x<0||y<0||x==m||y==n) return;
    if(map[x][y]==‘*‘) return;
    else
    {
        map[x][y]=‘*‘;
        for(i=0;i<8;i++)
            dfs(x+dir[i][0],y+dir[i][1]);
    }
}
int main()
{    int i=0;
    int j=0;
    while(~scanf("%d%d",&m,&n)&&m)
    {
        for(i=0;i<m;i++)
            scanf("%s",map[i]);
        count=0;
        for(i=0;i<m;i++)
            for(j=0;j<n;j++)
            {    if(map[i][j]==‘@‘)
                {
                    count++;
                    dfs(i,j);
                }
            }
        printf("%d\n",count);
    }
    return 0;
}

时间: 2024-12-20 06:25:02

dfs 算法的相关文章

leetcode中关于树的dfs算法题

Validate Binary Search Tree Recover Binary Search Tree Symmetric Tree Same Tree Maximum Depth of Binary Tree Construct Binary Tree from Preorder and Inorder Traversal Construct Binary Tree from Inorder and Postorder Traversal Convert Sorted Array to

hdu 1312 DFS算法简单题

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 此题与油田那题很像是练习深搜的好题,题意是从"@"开始,遍历整个图,找到连接的 "."有多少个 但要考虑变化,简单处理下就行了,主要是斜角的不要了,而且判断结束方式也不一样 具体看代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

LeetCode—**Combination Sum 利用DFS算法

Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T. The same repeated number may be chosen from C unlimited number of times. Note: All numbers (including target) will

BFS/DFS算法介绍与实现(转)

广度优先搜索(Breadth-First-Search)和深度优先搜索(Deep-First-Search)是搜索策略中最经常用到的两种方法,特别常用于图的搜索.其中有很多的算法都用到了这两种思想,比如:Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想.BFS的思想:从一个图的某一个顶点V0出发,首先访问和V0相邻的且未被访问过的顶点V1.V2.--Vn,然后依次访问与V1.V2--Vn相邻且未被访问的顶点.如此继续,找到所要找的顶点或者遍历完整个图.由此

15 图-图的遍历-基于邻接矩阵实现的BFS与DFS算法

算法分析和具体步骤解说直接写在代码注释上了 TvT 没时间了等下还要去洗衣服 就先不赘述了 有不明白的欢迎留言交流!(估计是没人看的了) 直接上代码: 1 #include<stdio.h> 2 #include<queue> 3 #include<iostream> 4 using namespace std; 5 typedef struct{ 6 int Vex[10];//顶点表 7 int Edge[10][10]; 8 int vexnum,arcnum;

解救小哈——DFS算法举例

一.问题引入 有一天,小哈一个人去玩迷宫.但是方向感不好的小哈很快就迷路了.小哼得知后便去解救无助的小哈.此时的小哼已经弄清楚了迷宫的地图,现在小哼要以最快的速度去解救小哈.那么,问题来了... 二.问题的分析 首先我们用一个二维数组来存储这个迷宫,刚开始的时候,小哼处于迷宫的入口处(1,1),小哈在(p,q).其实这道题的的本质就在于找从(1,1)到(p,q)的最短路径. 此时摆在小哼面前的路有两条,我们可以先让小哼往右边走,直到走不通的时候再回到这里,再去尝试另外一个方向. 在这里我们规定一

最易懂的DFS算法

这是世界上最易懂的算法,呵呵,来自啊哈算法. #include <iostream> using namespace std; int a[10],book[10],n; int total; void dfs(int step) //step表示站在第几个盒子面前 { if(step==n+1) //如果站在第n+1个盒子面前,则表示前n个盒子已经放好扑克牌 { //输出一种排列(1-n号盒子中的扑克牌编号) for(int i=1;i<=n;i++) cout<<a[i]

dfs算法中求数列的组合

/* 从13个书中挑选5个值,他们的组合可能是 什么, 如下代码 dfs深度遍历, 和全排列是一种方法,但是思路不同 */ public class Main { static int count = 0; static int a[] = new int[6]; public static void main(String[] args) { boolean visit[] = new boolean[13]; dfs(a,visit,1); System.out.println(count)

dfs算法总结

DFS 深度优先搜索 主要有两种实现方法:栈和递归 什么是DFS?说白了就是一直遍历元素的方式而已,我们可以把它看成是一条小蛇,在每个分叉路口随意选择一条路线走,直到撞到南墙,才会调头返回到上一个分叉路口,走另外一条路,有时候运气很好,撞到了目标点,那么这个算法就结束了. 模板: 参数1 DFS(参数2) {     if(返回条件成立) return 参数 :     DFS(进行下一步的搜索遍历) : 回朔: } 1)if 语句: 作用就是告诉小蛇:是否撞到南墙啦?撞到就返回啦,或者,是否到

POJ1753【简单DFS算法】--翻棋盘(一步看不懂!!)

Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 35877   Accepted: 15658 Description Flip game is played on a rectangular 4x4 field with two-sided pieces placed on each of its 16 squares. One side of each piece is white and the