九度教程第90题
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);
}
}
补充:软件开发 , C++ ,