当前位置:编程学习 > C/C++ >>

九度教程第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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,