题目地址:http://jobdu.sinaapp.com/problem.php?cid=1040&pid=89
C语言源码:
#include<stdio.h>int s[110][110];int m,n;void dfs(int i,int j){ s[i][j]=0; if(i>0&&s[i-1][j]==1) dfs(i-1,j); if(i<m&&s[i+1][j]==1) dfs(i+1,j); if(j>0&&s[i][j-1]==1) dfs(i,j-1); if(j<n&&s[i][j+1]==1) dfs(i,j+1); if(i>0&&j>0&&s[i-1][j-1]==1) dfs(i-1,j-1); if(i>0&&j<n&&s[i-1][j+1]==1) dfs(i-1,j+1); if(i<m&&j>0&&s[i+1][j-1]==1) dfs(i+1,j-1); if(i<m&&j<n&&s[i+1][j+1]==1) dfs(i+1,j+1);}int main(){ int i,j,num; char a[110]; scanf("%d %d",&m,&n); while(m) { for(i=0;i<m;i++) { scanf("%s",a); for(j=0;j<n;j++) if(a[j]=='*') s[i][j]=0; else s[i][j]=1; } num=0; for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(s[i][j]==1) { num++; dfs(i,j); } } } printf("%d\n",num); scanf("%d %d",&m,&n); }}