C語言源碼: [cpp] #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); } }