Hdu 1312 Red and Black

简单DFS。

CODE:

#include <stdio.h>
#include <stdlib.h>
#include < string.h>
using  namespace std;

int x, y;
int tot;
int n, m;
char maze[ 21][ 21];

void dfs( int x,  int y,  int& tot)
{
     if(x >=  0 && y >=  0 && x < n && y < m && maze[x][y] ==  ' . ' || maze[x][y] ==  ' @ ')
    {
        tot++;
        maze[x][y]=  ' # ';
        dfs(x+ 1, y, tot);
        dfs(x- 1, y, tot);
        dfs(x, y+ 1, tot);
        dfs(x, y- 1, tot);
    }
}

int main()
{
     int i, j;
     while(~scanf( " %d%d ", &m, &n), n, m)
    {
        tot =  0;
        memset(maze,  0sizeof(maze));
         for(i =  0; i < n; i++)
        {
            scanf( " %s ", maze[i]);
        }
         for(i =  0; i < n; i++)
        {
             for(j =  0; j < m; j++)
            {
                 if(maze[i][j] ==  ' @ ')
                {
                    dfs(i, j, tot);
                     break;
                }
            }
        }
        printf( " %d\n ", tot);
    }
     return  0;

} 

你可能感兴趣的:(HDU)