【DFS】(一)最简单的递归dfs——水坑问题(poj2386)

题目

话不多说,上代码

  • 代码
#include 

using namespace std;

#define MAX 105

int m,n;
char map[MAX][MAX];

void dfs(int i,int j)
{
    if(map[i][j]=='W'){
        map[i][j] = '.';//mark

        for(int k=-1;k<=1;k++)
            for(int f=-1;f<=1;f++)
                if(i>=0&&i<=m&&j>=0&&j<=n){
                    dfs(i+k,j+f);
                }
        return;
    }
    else return;
}

int main()
{
    int num = 0;
    scanf("%d%d",&m,&n);
    getchar();

    ///input
    for(int i=0;ifor(int j=0;jmap[i][j] = getchar();
        }
        getchar();  //'\n'
    }

    ///find
    for(int i=0;ifor(int j=0;jif(map[i][j]=='W')
                num  ++;
                dfs(i,j);
        }
    }
    printf("%d\n",num);
    return 0;
}

你可能感兴趣的:(#ACM刷题笔记,入门算法&数据结构)