首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求二维极大点有关问题的C/C++实现

2012-04-07 
求二维极大点问题的C/C++实现分治算法的一个应用。二维极大点问题:在一个点集中,如果一个点A的横坐标、纵坐

求二维极大点问题的C/C++实现
分治算法的一个应用。二维极大点问题:在一个点集中,如果一个点A的横坐标、纵坐标大于点B的横坐标、纵坐标,那么就说点A支配点B。如果一个点没有被其他点支配,则称这个点是极大者(maxima)。找出一个点集中所有的极大者。(maxima fiding problem)。自己试着写了一个,感觉太垃圾(不值得贴了),求哪位大牛指导(思想已知,感觉编程比较吃力)。

[解决办法]
我想了一个,先按照横坐标从小到大排序.

然后对序列从右到左做一次O(n)的扫描,扫描过程中记录maxHeight,表示到当前点右边的最高纵坐标.

如果curHeight<maxHeight,那说明右边有点比cur点高,cur被支配.

如果curHeight>maxHeight,那说明cur高于右边的一切点,没有被支配.

复杂度O(nlgn)
[解决办法]

探讨

我想了一个,先按照横坐标从小到大排序.

然后对序列从右到左做一次O(n)的扫描,扫描过程中记录maxHeight,表示到当前点右边的最高纵坐标.

如果curHeight<maxHeight,那说明右边有点比cur点高,cur被支配.

如果curHeight>maxHeight,那说明cur高于右边的一切点,没有被支配.

复杂度O(nlgn)

热点排行