poj 2002 HASH判斷正方形

2021-06-03 19:01:41 字數 631 閱讀 2711

題意:給出一些直角座標系的點,求這些點可以組成多少個正方形。

思路:hash 正方形一條邊的兩個點的和,然後求另外兩個點,如果可以找到構成這個正方形的點的話,個數加一

#include#include#define m 1031

using namespace std;

struct point

;point p[1024];

int cmp(const void *a,const void *b)

//qsort對結構體進行的二級快排

int hash[1500],next[1024];//hash[key]=i代表了這個和的狀態對應的儲存位置key 和 點的編號之間的對應 ,因為和有很多,並且查詢的時候還要用到,所以把hash[key]再儲存到next陣列中。

int hashcode(point &tp)

void insert(int i)

bool hashsearch(point &tp)

return false;

}int main()

{ int n,i,j;

point p3,p4;

while(scanf("%d",&n)!=eof&&n)

{ for(i=0;i

POJ 2002 統計正方形 HASH

題意 給定n個點,問有多少種方法可以組成正方形。思路 我們可以根據兩個點求出對應正方形 有2個乙個在兩點左邊,乙個在兩點右邊 另外兩個點的左邊。例如 已知 x1,y1 x2,y2 則x3 x1 y1 y2 y3 y1 x1 x2 x4 x2 y1 y2 y4 y2 x1 x2 或x3 x1 y1 y...

POJ 2002 Squares解題報告

題目大意 給你乙個二維平面上面的n 1000 個點的座標 每個點座標都不超過20000 讓你找出有多少個正方形。給了三秒半 思路 還是先看一眼暴力列舉,4個點的所有可能組合為n 4肯定超時了。列舉每兩個點的組合o n 2 然後看是否存在可以和他們組成正方形的點。即該位置上是否有點 用雜湊表可以將查詢...

POJ 2002 檢查正方形

這道題被分類到 hash 裡面了,我覺得hash的作用就是快速的查詢以來判重和計數 這道題要判斷的是是否存在點和正方形是否被計數過。前者用 map 和 pair 來解決,後者嘛,我只列舉某邊作為上邊的情況,所以,不必擔心拉 列舉每條邊作為正方形上邊時候的情況即可。include include in...