第四次作业

7-3 选点问题
数轴上有n个闭区间[ai, bi]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。
我的贪心策略:
在对区间的开始进行升序排序后,当区间存在重叠时,即区间的开始小于我的结束标准(eend)时,就可以仅取一个点来代表这两个区间。对于这个结束标准(eend),是每一次进行区间比较时确定的,它是出现区间重叠现象时,取两个区间bi更小的那一个bi作为结束标准,否则就以当前区间的结束作为eend,关键代码如下:
if(q[j].start<=eend){
eend=min(eend,q[j].end);
}
else{
dot++;
eend=q[j].end;
}
其中q是存储n个区间的结构体,dot是点的数量。
贪心选择性质:算法对于点的位置的选择后,剩余问题形式相同且独立,同时,每一步都导向整体最优解。
时间复杂度:在贪心选择方面,只需做n次循环,因此时间复杂度是O(n)。
贪心算法相较于动态规划算法来说是从上而下的,它的时间复杂度通常较低,算法也较为容易理解,但不一定能保证得到全局最优解。

posted @ 2025-12-05 17:52  张梓升  阅读(0)  评论(0)    收藏  举报