首页 > 其他 > 详细

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

时间:2015-07-20 22:49:25      阅读:252      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!