zoukankan      html  css  js  c++  java
  • SSLZYC 家族

    题目大意:
    已知连在一起的小写字母为一个家族,求一块大陆上有多少家族?


    思路:
    这道题由于数据小,所以可以用DFS也可以用BFS。
    这道题和 找石油 细胞问题 很像,而那两题我都用了BFS,所以这道题我用的是DFS。
    先将这块大陆读入在数组a里面,然后枚举家族所在位置,找到后DFS清零,计数。
    详见代码。


    代码:

    #include <cstdio>
    #include <iostream>
    using namespace std;
    char c;
    int a[202][202],sum,n;
    
    void dfs(int x,int y) 
    { 
         if (a[x][y]==0) return;
         a[x][y]=0;
         dfs(x+1,y);
         dfs(x-1,y);
         dfs(x,y+1);
         dfs(x,y-1);
    }
    
    int main()
    {
        freopen("family.in","r",stdin);
        freopen("family.out","w",stdout);
        scanf("%d",&n);
        int j;
        for (int i=0;i<=n;i++)
        { 
            int j=0;
            while ((c=getchar())!='\n')
            {
                j++;
                if (c>='a'&&c<='z') a[i][j]=1;
            }
        }
        for (int i=1;i<=n;i++)
         for (int k=1;k<=200;k++)
          if (a[i][k]==1)
          {
             sum++;
             dfs(i,k);
          }
        printf("%d",sum);
        return 0;
    }
  • 相关阅读:
    coder的脚印
    Mysql
    MSDos
    Windows Develop
    Eclipse 使用总结
    DBA常用SQL
    SSH总结
    Unity3D协程
    yield的作用
    UGUI优化
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/9313130.html
Copyright © 2011-2022 走看看