zoukankan      html  css  js  c++  java
  • poj 2386 DFS

    DFS 水题

     1 #include <iostream>
    2 #include <stdio.h>
    3 #include <string.h>
    4 using namespace std;
    5
    6 const int maxx=100;
    7 int n,m,cnt,dir[8][2]={{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1}};
    8 char pool[maxx+2][maxx+2];
    9 bool visit[maxx+2][maxx+2];
    10
    11 bool judge(int a,int b)
    12 {
    13 if(a>=1 && a<=n && b>=1 && b<=m && pool[a][b]=='W')
    14 return 1;
    15 return 0;
    16 }
    17 void dfsvisit(int x,int y)
    18 {
    19 int i,a,b;
    20 for(i=0;i<=7;i++)
    21 {
    22 a=x+dir[i][0];
    23 b=y+dir[i][1];
    24 if(judge(a,b) && !visit[a][b])
    25 {
    26 visit[a][b]=1;
    27 dfsvisit(a,b);
    28 }
    29 }
    30 }
    31
    32 void dfs()
    33 {
    34 int i,j;
    35 for(i=1;i<=n;i++)
    36 for(j=1;j<=m;j++)
    37 {
    38 if(!visit[i][j] && pool[i][j]=='W')
    39 {
    40 visit[i][j]=1;
    41 dfsvisit(i,j);
    42 cnt++;
    43 }
    44 }
    45 }
    46
    47 int main()
    48 {
    49 int i,j;
    50 freopen("in.txt","r",stdin);
    51 while(scanf("%d%d",&n,&m)!=EOF)
    52 {
    53 memset(visit,0,sizeof(visit));
    54 for(i=1;i<=n;i++)
    55 for(j=1;j<=m;j++)
    56 cin>>pool[i][j];
    57 cnt=0;
    58 dfs();
    59 printf("%d\n",cnt);
    60 }
    61 return 0;
    62 }



  • 相关阅读:
    个人博客
    个人博客
    5.4
    4.30
    4.29
    4.28
    4.27
    4.26
    4.25
    4.24
  • 原文地址:https://www.cnblogs.com/inpeace7/p/2422748.html
Copyright © 2011-2022 走看看