1. 程式人生 > >2018.12.21 家族

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; }