Squares Time Limit: 3500MS Memory Limit: 65536K Total Submissions: 15489 Accepted: 5864
Description
A square is a 4-sided polygon whose sides have equal length and adjacent sides form 90-degree angles. It is also a polygon such that rotating about its centre by 90 degrees gives the same polygon. It is not the only polygon with the latter property, however, as a regular octagon also has this property.Input
The input consists of a number of test cases. Each test case starts with the integer n (1 <= n <= 1000) indicating the number of points to follow. Each of the next n lines specify the x and y coordinates (two integers) of each point. You may assume that the points are distinct and the magnitudes of the coordinates are less than 20000. The input is terminated when n = 0.Output
For each test case, print on a line the number of squares one can form from the given stars.Sample Input
4 1 0 0 1 1 1 0 0 9 0 0 1 0 2 0 0 2 1 2 2 2 0 1 1 1 2 1 4 -2 5 3 7 0 0 5 2 0
Sample Output
1 6 1
二維平面給定一堆點,求可以組成正方形的個數,點數為1000,因此不能枚舉四個點判斷,
比較優化的方法是將所有點hash,然後枚舉兩個點,計算出另外兩個點的坐標,然後在hash表裡查找,最後結果除以4,因為每一條邊被統計了4次。
代碼:
/* *********************************************** Author :_rabbit Created Time :2014/5/11 8:26:00 File Name :20.cpp ************************************************ */ #pragma comment(linker, "/STACK:102400000,102400000") #include#include #include #include #include #include #include #include #include #include #include #include #include #include