Interval Intersections

Interval Intersections

Time Limit: 1000 MS    Memory Limit: 65536 Kb
Total Submission: 484   Accepted: 178

Description

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

Input

多组测试数据。每组测试数据第一行是正整数n(n≤100),表示闭区间数。接下来的n行中,每行有2 个整数,分别表示闭区间的2个端点。

Output

输出每组测试数据的去掉的最小区间数,每组测试数据输出单独一行。

Sample Input

3
10 20
10 15
20 15

Sample Output

2





#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <string>
#include <algorithm>

using namespace std;
const int MAXN = 100 + 10;
int start[MAXN], finish[MAXN];

int main()
{
    int n;
    while(cin >> n)
    {
        memset(start, 0, sizeof start);
        memset(finish, 0, sizeof finish);
        for(int i = 0; i < n; i++)
        {
            cin >> start[i];
            cin >> finish[i];
            if(start[i] > finish[i])
                swap(start[i], finish[i]);
        }

        int cnt;
        int selected;
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j + 1 < n; j++)
            {
                if(finish[j] > finish[j + 1])
                {
                    swap(finish[j], finish[j + 1]);
                    swap(start[j], start[j + 1]);
                }
            }
        }
        selected = 0;
        cnt = 1;
        for(int i = 1; i < n; i++)
        {
            if(start[i] > finish[selected])
            {
                selected = i;
                cnt++;
            }
        }
        cout << (n - cnt) << endl;
    }
    return 0;
}

(贪心算法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值