poj2386----简单dfs,a一送一

来源:互联网 发布:淘宝男内裤 买家秀 编辑:程序博客网 时间:2024/06/03 23:00


/*poj2386 求有几个水坑*/#include<stdio.h>#include<iostream>char ans[110][110];int n, m;int cnt;int dx[10] = {-1, 0, 1, -1, 1, -1, 0, 1};int dy[10] = {1, 1, 1, 0, 0, -1, -1, -1};void dfs(int x, int y){    ans[x][y] = '.';    for(int i=0; i<8; i++)    {        int tx = x + dx[i];        int ty = y + dy[i];        if(tx>=0 && tx<n && ty>=0 && ty<m && ans[tx][ty]=='W')        {            dfs(tx, ty);                 }            }}void fun(){    cnt = 0;    for(int i=0; i<n; i++)    {        for(int j=0; j<m; j++)        {            if(ans[i][j] == 'W')            {                cnt++;                dfs(i, j);                       }               }            }    printf("%d\n", cnt);     }int main(){    while(scanf("%d %d", &n, &m) != EOF)    {        getchar();        for(int i=0; i<n; i++)        {            for(int j=0; j<m; j++)            {                scanf("%c", &ans[i][j]);                    }              getchar();              }              fun();    }    return 0;    }



a一送一:poj3620

/*poj3620 求最大的水坑*/ #include<iostream>#include<stdio.h>int n, m, k;int ans[110][110];int dx[5] = {0, 1, 0, -1};int dy[5] = {1, 0, -1, 0};int tmp;void dfs(int x, int y){    ans[x][y] = 0; tmp++;    for(int i=0; i<4; i++)    {        int tx = x + dx[i];        int ty = y + dy[i];        if(tx>=0 && tx<n && ty>=0 && ty<m && ans[tx][ty])         {            dfs(tx, ty) ;         }           }   }void fun(){    int cnt = 0;    for(int i=0; i<n; i++)    {        for(int j=0; j<m; j++)        {            tmp=0;            if(ans[i][j])            {                dfs(i, j);                  if(tmp > cnt)                    cnt = tmp;               }                }            }      printf("%d\n", cnt);  }int main(){    int a, b;    while(scanf("%d %d %d", &n, &m, &k) != EOF)    {        for(int i=0; i<n; i++)        {            for(int j=0; j<m; j++)            {                ans[i][j] = 0;                    }                }                for(int i=0; i<k; i++)        {            scanf("%d %d", &a, &b);            ans[a-1][b-1] = 1;                }        fun();    }    return 0;    }



a一送一:poj3620
原创粉丝点击