zoukankan      html  css  js  c++  java
  • 2152 sdut Balloons (dfs)

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdlib.h>
     4 char map[110][110],cpy[110][110];
     5 int vis[110][110];
     6 
     7 int dx[4]={0,0,1,-1};
     8 int dy[4]={1,-1,0,0};
     9 
    10 int tdx[8]={0,0,1,-1,1,-1,1,-1};
    11 int tdy[8]={1,-1,0,0,1,1,-1,-1};
    12  int n,i,j,cnt1,cnt2;
    13 
    14 void dfs(int i,int j)
    15 {
    16     int k;
    17     for(k=0; k<4; k++)
    18     {
    19         int nx=i+dx[k],ny=j+dy[k];
    20         if(nx>=0&&nx<n&&ny>=0&&ny<n&&!vis[nx][ny]&&map[nx][ny]=='1')
    21         {
    22             vis[nx][ny]=1;
    23             dfs(nx,ny);
    24         }
    25     }
    26 };
    27 
    28 void dfs2(int i,int j)
    29 {
    30    int k;
    31    for(k=0; k<8; k++)
    32    {
    33        int nx=i+tdx[k],ny=j+tdy[k];
    34        if(nx>=0&&nx<n&&ny>=0&&ny<n&&!vis[nx][ny]&&map[nx][ny]=='1')
    35         {
    36             vis[nx][ny]=1;
    37             dfs2(nx,ny);
    38         }
    39    }
    40 };
    41 int main()
    42 {
    43     int t=1;
    44     while(~scanf("%d",&n)&&n)
    45     {
    46         cnt1=0; cnt2=0;
    47         for(i=0; i<n; i++)
    48         {
    49             scanf("%s",map[i]);
    50             strcpy(cpy[i],map[i]);
    51         }
    52 
    53         memset(vis,0,sizeof(vis));
    54         for(i=0; i<n; i++)
    55         for(j=0; j<n; j++)
    56         {
    57             if(map[i][j]=='1'&&!vis[i][j])
    58             {
    59                 dfs(i,j);
    60                 cnt1++;
    61                 vis[i][j]=1;
    62             }
    63         }
    64 
    65         memset(vis,0,sizeof(vis));
    66         for(i=0; i<n; i++)
    67         {
    68             strcpy(map[i],cpy[i]);
    69         }
    70 
    71         for(i=0; i<n; i++)
    72         for(j=0; j<n; j++)
    73         {
    74             if(map[i][j]=='1'&&!vis[i][j])
    75             {
    76                 cnt2++;
    77                 vis[i][j]=1;
    78                 dfs2(i,j);
    79             }
    80         }
    81         printf("Case %d: %d %d\n\n",t,cnt1,cnt2);
    82         t++;
    83     }
    84 }
    85  
    View Code

     http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2152

  • 相关阅读:
    链表栈
    双链表
    Linux sar命令查看系统资源使用情况
    Linux 命令(w/who/whoami/who am i)
    shell脚本引用expect
    expect 免交互配置互信
    expect 远程传输文件
    expect 远程执行命令-02
    expect 远程执行命令-01
    expect 脚本自定义变量和位置变量
  • 原文地址:https://www.cnblogs.com/bfshm/p/3094184.html
Copyright © 2011-2022 走看看