1. 程式人生 > >選擇不相交區間問題 (貪心)

選擇不相交區間問題 (貪心)

數軸上有n個開區間(ai,bi),選擇儘量多個區間,使得這些區間兩兩沒有公共點。

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int n;
struct node
{
    int l;
    int r;
}ss[1000];
int cmp(node a,node b)
{
    if(a.r==b.r)
        return a.l>b.l;
    return a.r<b.r;
}
int
main() { int i,j; while(~scanf("%d",&n)) { for(i=0;i<n;i++) { scanf("%d %d",&ss[i].l,&ss[i].r); } int sum=1; sort(ss,ss+n,cmp); // for(i=0;i<n;i++) // { // printf("%d %d\n",ss[i].l,ss[i].r); // }
int end=ss[0].r; for(i=1;i<n;i++) { if(ss[i].l>=end) { end=ss[i].r; sum++; } } printf("%d\n",sum); } return 0; }