B - 区间选点(贪心算法)

区间选点

  • 题意
    数轴上有 n 个闭区间 [a_i, b_i]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个

  • 输入输出
    Input
    第一行1个整数N(N<=100),第2~N+1行,每行两个整数a,b(a,b<=100)
    Output
    一个整数,代表选点的数目
    B - 区间选点(贪心算法)_第1张图片

  • 解题思路:由于要选尽量少的点满足所有区间,所以重点是要判断有没有重叠部分。自定义结构体node记录区间的两个端点,用cmp函数将所有区间的按照小的端点升序排列,从第一个区间开始依次向后比较,如果前一个区间的y小于后一个区间的x,即没有重叠部分时,计数器加一。如果有重叠部分,则将后一个区间的y更新为当前两个区间中较大的y,继续向后比较。最后输出计数器的值,就是最小的点数。

  • 代码实现

你可能感兴趣的:(B - 区间选点(贪心算法))