• 统计正方形个数——pku2002


    统计正方形个数 set做

    结构体要加:

    friend bool operator<(data a,data b)

    {

    if(a.x==b.x)

    return a.y>b.y;

    else

    return a.x>b.x;

    }

    枚举正方形的两个点 知道下面两个点

    寻找set中这两个点是否存在

    View Code
    #include<stdio.h>
    #include
    <string.h>
    #include
    <iostream>
    #include
    <set>
    using namespace std;

    struct data
    {
    int x,y;
    friend
    bool operator<(data a,data b)
    {
    if(a.x==b.x)
    return a.y>b.y;
    else
    return a.x>b.x;
    }
    };
    data all[
    1009];

    int main()
    {

    int n;
    while(scanf("%d",&n),n!=0)
    {
    set<data>ss;
    int i;
    int add=0;
    for(i=1;i<=n;i++)
    {
    data f;
    scanf(
    "%d%d",&f.x,&f.y);
    all[i].x
    =f.x;
    all[i].y
    =f.y;
    ss.insert(f);
    }

    int j;
    for(i=1;i<=n;i++)
    {
    for(j=1;j<=n;j++)
    {
    if(i==j)continue;

    if((all[i].x<=all[j].x)&&(all[i].y<all[j].y))//顶点i,j在水平方向或是i在j的左下方
    {
    int a=all[j].x-all[i].x;//只是一条边
    int b=all[j].y-all[i].y;
    int x=b,y=-a;

    data ll,rr;
    ll.x
    =all[i].x+x;
    ll.y
    =all[i].y+y;
    rr.x
    =all[j].x+x;
    rr.y
    =all[j].y+y;
    if(ss.find(ll)!=ss.end()&&ss.find(rr)!=ss.end())
    {
    add
    ++;
    }
    }
    }
    }

    printf(
    "%d\n",add);
    }
    }

      

  • 相关阅读:
    JavaScript常用正則表達式
    详尽解析window.event对象
    DWR的类却无法在js里用
    javascript控制小数点精度
    49. Group Anagrams
    48. Rotate Image
    64. Minimum Path Sum
    63. Unique Paths II
    62. Unique Paths
    53. Maximum Subarray
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2141488.html
Copyright © 2020-2023  润新知