zoukankan      html  css  js  c++  java
  • 统计正方形个数——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);
    }
    }

      

  • 相关阅读:
    uva111 History Grading
    UVA 10100Longest Match
    UVA 147Dollars
    归并排序模板
    找礼物(find)
    水流(water)dfs
    细菌(disease) 位运算
    单词接龙
    关于jquery的each遍历,return只终止当前循环,不好使的解决办法
    jquery中ajax回调函数使用this
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2141488.html
Copyright © 2011-2022 走看看