这是不可能的,因为共线性不是传递性的.即,让我们说AB和C在一条线上(即共线).因此,AB和C应该获得相同的散列键.接下来,CD和E也位于另一条线上.因此,CD和E也应该获得相同的散列键.因此,AB接收与D和E相同的散列密钥,这是错误的,因为这些点不是共线的.
此外,共线性是根据点集定义的,因此我的上述定义相当模糊.即你不能说A和B是共线的(嗯,你可以,但如果你只考虑两点,每对点是共线的).
你可以做的是将一组共线点保存在哈希映射中.然后,良好的散列函数将简单地包括斜率s和纵坐标i.例如,您可以使用s*31i.此哈希映射可用于向集合添加新点,并最终计算集合的大小以检索您的答案.
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |