2018.12.21 家族

正在做的dp真的烦人


题目传送门

简单的dfs

#include<iostream>
#include<cstring>
#include<cctype>
#include<cstdio>
using namespace std;
char c[10005];
int n,maxn,book[305][305],cnt,l;
static const int dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
void dfs(int x,int y)
{
    book[x][y]=0;
    for(int i=0;i<4;i++)
    {
        int tx=x+dx[i],ty=y+dy[i];
        if(tx<1||tx>n||ty<1||ty>maxn||book[tx][ty]!=1)continue;
        dfs(tx,ty);
    }
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n+1;i++)
    {
        gets(c);
        l=strlen(c);
        maxn=max(maxn,l);
        for(int j=1;j<=l;j++)
        {
            if(c[j-1]<='z'&&c[j-1]>='a')book[i-1][j]=1;
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=maxn;j++)
        {
            if(book[i][j])
            {
                dfs(i,j);
                cnt++;
            }
        }
    }
    printf("%d",cnt);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/qxds/p/10157306.html