码迷,mamicode.com
首页 > 其他好文 > 详细

openjudge-2815:城堡问题【简单DFS】

时间:2015-07-20 22:52:01      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

#include<iostream>
#include<cstring>
using namespace std;
#define Size 50
int rooms[Size+1][Size+1];
bool visited[Size+1][Size+1];// 每个格子的状态 访问与否
int RoomArea; //  城堡中每一个房间的面积

void DFS( int x, int y )
{
        if( visited[x][y] )
            return ;
        visited[x][y] = 1;
        RoomArea++;
        if( (rooms[x][y] & 1) == 0 ) DFS( x, y-1 );   //向西搜索
        if( (rooms[x][y] & 2) == 0 ) DFS( x-1, y );   //向北
        if( (rooms[x][y] & 4) == 0  ) DFS( x, y+1 ); //向东
        if( (rooms[x][y] & 8) == 0 ) DFS( x+1, y );  //向南
}

int main()
{
        int row, column, RoomNum, MaxArea;
        cin>>row>>column;
        memset( visited, 0, sizeof(visited) );

        for( int i=0; i<row; i++ )
            for( int j=0; j<column; j++ )
                cin>>rooms[i][j];

        RoomNum = MaxArea = 0;
        for( int i=0; i<row; i++ )
            for( int j=0; j<column; j++ )//遍历每个格子 求得RoomNum
                {
                    if( visited[i][j] )
                        continue;

                    RoomNum++;
                    RoomArea = 0;
                    DFS( i, j );
                    MaxArea = max( RoomArea, MaxArea );
                }
        cout<<RoomNum<<endl;
        cout<<MaxArea<<endl;

        return 0;
}

 

openjudge-2815:城堡问题【简单DFS】

标签:

原文地址:http://www.cnblogs.com/FightForCMU/p/4662809.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!