Squares--POJ-2002
Q :给出 n 不同的点(以坐标形式给出),判断其可以构成多少个正方形?
-
思路如下:
-
① .稍有智商的人都会数数,所以就是把每种情况都进行判断,如果你要是准备消磨时间的话,你就写吧!
-
② .很明显,①的做法对这道题来说不管用,因为会超时,由于考虑到了hash表,那么怎么去实现它的查找
-
功能呢?......
-
我的思路:
-
如果给出正方形的一个边,即得知其两个点,则可以算出另外两个点的坐标,然后再hash表中查看这两个
-
点是否在表内。 所以对所有点进行两两遍历计算查找,如果对于一个构成的正方形,对其进行了四次遍历,
-
所以结构要 除以 4;
-
③ .点的计算 给出 点(a,b),和(c,d);设计算点为 两种结果:第一种 点(a+b-d,b+c-a) 和
-
点(c+b-d,d+c-a) 。第二种 点( a-(b-d),b-(c-a) ) 和 点( c-(b-d),d-(c-a) );
-
④.考虑得到可对③的那种情况做些修改然后只考虑一种情况,然后得到代码如下:
-
-
-
说代码了:时间为 500ms
-
-
这个代码是在下目前能力的极限,不过有些牛人太厉害了,100ms内,对以上代码如果有什么可以优化的请各位指点指点...