HDU2952 DFS

来源:互联网 发布:android仿淘宝头条 编辑:程序博客网 时间:2024/05/22 17:16
题目省略

题意:求四连块个数

解题思路:很水的DFS。。。

代码如下

#include <queue>#include <stdio.h>#include <memory.h>#include <stdio.h>#include <iostream>using namespace std;#define maxn 1005char pic[maxn][maxn];int flag[maxn][maxn];int n,m;void dfs(int r,int s,int num){    if(r<0||r>=n||s<0||s>=m) return;    if(pic[r][s]=='.'||flag[r][s]) return;    flag[r][s]=num;    dfs(r+1,s,num);    dfs(r-1,s,num);    dfs(r,s+1,num);    dfs(r,s-1,num);}int main(){    //freopen("in.txt","r",stdin);    int t;    cin>>t;    while(t--)    {        cin>>n>>m;        getchar();        for(int i=0; i<n; i++)            gets(pic[i]);        memset(flag,0,sizeof(flag));        int num=0;        for(int i=0; i<n; i++)            for(int j=0; j<m; j++)                if(pic[i][j]=='#'&&flag[i][j]==0) dfs(i,j,++num);        printf("%d\n",num);    }    return 0;}