正在做的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; }