poj1562--DFS

来源:互联网 发布:中建三局西部投资知乎 编辑:程序博客网 时间:2024/05/16 13:38

一次AC,虽然是水题,虽然算法写得不是很好,但是一次AC还是很爽的。。

//#define LOCAL#include <stdio.h>#include <string.h>#define MAXN 100 + 10char graph[MAXN][MAXN];int count;int m, n;void DFS(int p, int q);int main(){#ifdef LOCALfreopen("C:\\Users\\Administrator\\Desktop\\Temp\\ACMTempIn.txt", "r", stdin);//freopen("C:\\Users\\Administrator\\Desktop\\Temp\\ACMTempOut.txt", "w", stdout);#endif    int i, j;    while(scanf("%d%d", &m, &n) && m != 0)    {        // 初始化        count = 0;        memset(graph, 0, sizeof(graph));                // 数据输入        for(i = 0; i < m; i++)        {            for(j = 0; j < n; j++)            {                scanf("\n%c", &graph[i][j]);            }        }                // 算法主体        for(i = 0; i < m; i++)            for(j = 0; j < n; j++)                if(graph[i][j] == '@')                {                    DFS(i, j);                    count++;                }                // 数据输出        printf("%d\n", count);    }    return 0;}void DFS(int p, int q){    if(p >= 0 && p <= m - 1 && q >= 0 && q <= n - 1 && graph[p][q] == '@')    {        graph[p][q] = '*';    }    else    {        return;    }                DFS(p - 1, q - 1);        DFS(p - 1, q);        DFS(p - 1, q + 1);        DFS(p, q - 1);        DFS(p, q + 1);        DFS(p + 1, q - 1);        DFS(p + 1, q);        DFS(p + 1, q + 1);}



原创粉丝点击