区间相交问题

来源:互联网 发布:c#9语言高级编程 pdf 编辑:程序博客网 时间:2024/06/11 19:47

Description

给定x轴上n个闭区间,去掉尽可能少的闭区间,使剩下的闭区间都不相交。

注意:这里,若区间与另一区间之间仅有端点是相同的,不算做区间相交。 例如,[12][23]算是不相交区间。 

输入格式

第一行一个正整数n(n<=50),表示闭区间数。

接下来n行中,每行2个整数,表示闭区间的2个整数端点。

 

输出格式

输出去掉的最少的闭区间数。

 

输入样例

 3
10 20
10 15
12 15

输出样例

 2


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#include <cstdio>#include <algorithm>using namespace std;int main(){    int n;    scanf("%d", &n);    int * xbeg = new int[n + 1];    int * xend = new int[n + 1];    for(int i = 1; i <= n; i++){        scanf("%d%d", &xbeg[i], &xend[i]);    }    for(int i = 1; i <= n - 1; i++){        for(int j = i + 1; j <= n; j++){            if(xend[j] < xend[i]){                int t1 = xend[j];                xend[j] = xend[i];                xend[i] = t1;                int t2 = xbeg[j];                xbeg[j] = xbeg[i];                xbeg[i] = t2;            }        }    }    int number = n - 1;    int k = 1;    for(int i = 2; i <= n; i++){        if(xbeg[i] >= xend[k]){            number--;            k = i;        }    }    printf("%d\n", number);    return 0;}


0 0
原创粉丝点击