深度优先搜索(dfs),城堡问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度优先搜索(dfs),城堡问题相关的知识,希望对你有一定的参考价值。

题目链接:http://poj.org/problem?id=1164

1、深搜,每个点都访问一次,没有标记的话,就做深搜,同时标记。

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

int r,c;
int rooms[60][60],color[60][60];
int MAX=0,NUM=0;
int area;

void dfs(int i,int j)
{
    if(color[i][j]!=0)
        return ;
    else
    {
        color[i][j]=1;
        area++;
        if((rooms[i][j]&1)==0) dfs(i,j-1);///向西
        if((rooms[i][j]&2)==0) dfs(i-1,j);///向北
        if((rooms[i][j]&4)==0) dfs(i,j+1);///向东
        if((rooms[i][j]&8)==0) dfs(i+1,j);///向南
    }
}

int main()
{
    cin>>r>>c;
    memset(color,0,sizeof(color));
    for(int i=1; i<=r; i++)
        for(int j=1; j<=c; j++)
            cin>>rooms[i][j];
    for(int i=1; i<=r; i++)
    {
        for(int j=1; j<=c; j++)
        {
            if(color[i][j]==0)
            {
                NUM++;
                area=0;
                dfs(i,j);
                MAX=max(MAX,area);
            }
        }
    }
    cout<<NUM<<endl<<MAX;
    return 0;
}

 

以上是关于深度优先搜索(dfs),城堡问题的主要内容,如果未能解决你的问题,请参考以下文章

深度优先搜索DFS

LeetCode 988:回溯和深度优先搜索(DFS)的区别

基本算法——深度优先搜索(DFS)和广度优先搜索(BFS)

数据结构与算法图遍历算法 ( 深度优先搜索 DFS | 深度优先搜索和广度优先搜索 | 深度优先搜索基本思想 | 深度优先搜索算法步骤 | 深度优先搜索理论示例 )

深度优先搜索 DFS(Depath First Search, DFS)

DFS(深度优先搜索)