• 求细胞个数


    一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如:
    阵列  4  10
    0234500067
    1034560500
    2045600671
    0000000089
    有4个细胞。
    【算法分析】
           ⑴从文件中读入m*n矩阵阵列,将其转换为bool矩阵存入b数组中;
           ⑵沿b数组矩阵从上到下,从左到右,找到遇到的第一个细胞;
           ⑶将细胞的位置入队h,并沿其上、下、左、右四个方向上的细胞位置入队,入队后的位置b数组置为flase;
           ⑷将h队的队头出队,沿其上、下、左、右四个方向上的细胞位置入队,入队后的位置b数组置为flase;
           ⑸重复4,直至h队空为止,则此时找出了一个细胞;
           ⑹重复2,直至矩阵找不到细胞;
           ⑺输出找到的细胞数。
     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int a[101][101];
     5 int xx[5]={-1,1,0,0};
     6 int yy[5]={0,0,-1,+1};
     7 int tot=0;
     8 int n,m;
     9 void dfs(int i,int j)
    10 {
    11     for(int k=0;k<4;k++)
    12     {
    13         if(i+xx[k]>=1&&j+yy[k]>=1&&i+xx[k]<=n&&j+yy[k]<=m&&a[i+xx[k]][j+yy[k]]==1)
    14         {
    15             a[i+xx[k]][j+yy[k]]=0;
    16             dfs(i+xx[k],j+yy[k]);
    17         }
    18     }
    19 }
    20 int main()
    21 {
    22     char p[101];
    23     cin>>n>>m;
    24     for(int i=1;i<=n;i++)
    25     {
    26         scanf("%s",p);
    27         for(int j=1;j<=m;j++)
    28         {
    29             int d=p[j-1]-48;
    30             if(d==0)
    31             a[i][j]=0;
    32             else
    33             a[i][j]=1;
    34         }
    35     }
    36     /*for(int i=1;i<=n;i++)
    37     {
    38         for(int j=1;j<=m;j++)
    39         {
    40             int d;
    41             cin>>d;
    42             if(d!=0)
    43             a[i][j]=1;
    44             else
    45             a[i][j]=0;
    46         }
    47     }*/
    48     for(int i=1;i<=n;i++)
    49     {
    50         for(int j=1;j<=m;j++)
    51         {
    52             if(a[i][j]==1)
    53             {
    54                 a[i][j]=0;
    55                 dfs(i,j);
    56                 tot++;
    57             }
    58         }
    59     }
    60     cout<<tot;
    61     return 0;
    62 }
  • 相关阅读:
    使用性能监视器找出SQLServer硬件瓶颈
    重启sql server 服务
    优化SQL Server数据库查询方法
    tempdb对SQL Server数据库性能有何影响
    利用动态管理视图提高SQL Server索引效率
    SQL Server 2008 R2数据库镜像部署
    优化数据库的注意事项
    查看 SQL Server 2000 中数据表所占用的磁盘空间
    SQL Server 2005 排查I/O瓶颈
    SQL语句优化的原则
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6635491.html
Copyright © 2020-2023  润新知