• 区间相交问题


    问题描述:

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

    数据输入:

      第一行是正整数n,表示闭区间数。接下来的n行中,每行有2 个整数,分别表示闭区间的2个端点。

    结果输出:

       计算出的去掉的最少闭区间数。

       输出为需要去掉的区间数

    代码:

    #include <iostream>
    #include <algorithm>
    using namespace std;
    struct que
    {
        int x,y;
    };
    //排序规则
    int tmp(const que &a,const que &b)
    {
        if(a.y==b.y)
        return a.x<=b.x;
        return a.y<b.y;
    }
    int main()
    {
        int n;
        cin>>n;
        que s[n];
        for(int i=0;i<n;i++)
        {
            cin>>s[i].x>>s[i].y;
            if(s[i].x>s[i].y)
            {
                int t=s[i].x;
                s[i].x=s[i].y;
                s[i].y=t;
            }
        }   //输入并处理,前小后大
        sort(s,s+n,tmp);    //排序
        int sum=1;
        for(int i=0;i<n-1;i++)
        {
            if(s[i].y<s[i+1].x)
            {
                sum++;        //相连区间数
            }
        }
        cout<<n-sum<<endl;     //去掉的区间数
        return 0;
    }
  • 相关阅读:
    【应用】SVG饼状图
    【应用】图片翻转js
    userData IE
    cookie
    Local storage htm5
    全局ajax事件
    jQuery ajax序列化函数
    jQuery ajax中的get请求方法汇总
    $.ajax()
    nodejs安装错误
  • 原文地址:https://www.cnblogs.com/llsq/p/7688259.html
Copyright © 2020-2023  润新知