实现最优的算法,详情如下(给出所有的分)(100分)

  • 主题发起人 主题发起人 chen202
  • 开始时间 开始时间
C

chen202

Unregistered / Unconfirmed
GUEST, unregistred user!
假设屏幕上随机产生100个点,每个点都会随机移动,我想判断各点之间的距离,
如果任两点的距离小于某一值时(例:10),则用红颜色标出这两个点,该如何判断
速度才最快?
 
随机移动很不好办,唯一考虑的是将这100个点是放进链表还是数组还是哈西表。然后隔多少时间检查一遍,我想是这样实现,不知道还有别的高见没有。
 
非正规思路:判断100个圆,用该点做圆心,用10做半径,当画圆的时候判断圆边境原来的颜色,如果不是背景,那么这个圆的圆心就是红色,同时知道交点的所属圆心也为红色。
 
每隔一段时间(如100ms)检查一遍,在检查时,所有的点是静止的。
首先将所有点按X坐标排序,然后依次检查每个点之后10个单位内是否有其它点,有的话计算两点之间距离,如果小于10,满足条件,标记两点为红色。如此直到100个点检查完毕。
 
coolqiang的办法挺有新意的,
还有别的办法吗?主要是想提高效率
 
江屏幕分成 Sqrt(2)/2 * 最小距离 的方格
点映射到每个方格中
同一个方格中的一个是红的
只对不为红色的点和相邻方格中的点做比较
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
926
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部