HDU4739

来源:互联网 发布:深圳市房地产交易数据 编辑:程序博客网 时间:2024/05/19 12:17

题目:题目链接

 

题意:找正方形的个数有多少?

 

分析:枚举对角线坐标就可以了,爆搞一下

 

代码:

 

#include <iostream>#include <cstdio>#include <string>#include <string.h>#include <map>#include <vector>#include <cstdlib>#include <algorithm>#include <cmath>#include <queue>#include <set>#include <stack>#include <functional>#include <fstream>#include <sstream>#include <iomanip>#include <numeric>#include <cassert>#include <bitset>#include <stack>#include <ctime>#include <list>#define INF 0x7fffffff#define max3(a,b,c) (max(a,b)>c?max(a,b):c)#define min3(a,b,c) (min(a,b)<c?min(a,b):c)#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const int MAXN=40;int n,ans;struct point{    int x,y;    friend bool operator < (const point &a, const point &b )    {        if(a.x!= b.x)            return a.x<b.x;        return a.y<b.y;    }} Point[MAXN];bool visited[MAXN];int Check(int x,int y){    int i;    for(i=0; i<n; i++)    {        if(!visited[i] && Point[i].x == x && Point[i].y == y)            return i;    }    return -1;}void DFS(int num){    int i,j;    if(num>ans)        ans=num;    for(i=0; i<n; i++)    {        if(!visited[i])        {            for(j=i+1; j<n; j++)            {                if(!visited[j])                {                    if((Point[j].x-Point[i].x)==(Point[j].y-Point[i].y)&&(Point[j].x-Point[i].x))                    {                        int t1=Check(Point[i].x, Point[j].y);                        int t2=Check(Point[j].x, Point[i].y);                        if(t1!=-1 && t2!=-1)                        {                            visited[i]=true,visited[j]=true,visited[t1]=true,visited[t2]=true;                            DFS(num+1);                        }                    }                }            }        }    }}int main(){    int i;    while(~scanf("%d",&n))    {        if(-1==n)            break;        for(i=0; i<n; i++)            scanf("%d%d",&Point[i].x,&Point[i].y);        sort(Point,Point+n);        ans=0;        memset(visited,0,sizeof(visited));        DFS(0);        printf("%d\n",ans*4);    }    return 0;}


 

 

 

原创粉丝点击