UvaLive 6663 Count the Regions 离散化+DFS

链接:http://vjudge.net/problem/viewProblem.action?id=49408

题意:在平面内给出若干个矩形,求出它们能将整个平面分成多少份。

思路:刚开始一眼看到觉得是几何题,但是发现最多只有50个矩形后,灵光一闪觉得直接离散化再暴力就可以了。把所有矩形的x,y坐标分别离散化,并且为了防止出现离散的太近导致矩形之前没有空隙的情况,将所有点离散化的坐标记作偶数坐标。然后DFS找到所有矩形之间的空隙。

代码:

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int dir[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};
int vis[220][220];
int ans=0;
int tot;
int lenx,leny;
int dfs2(int x,int y)
{
    if(vis[x][y]==0)
    {
        vis[x][y]=1;
        for(int i=0; i<4; i++)
        {
            int nx=x+dir[i][0];
            int ny=y+dir[i][1];
            if(nx>=0&&nx=0&&ny=0&&nx=0&&ny


你可能感兴趣的:(*搜索)