1. 程式人生 > >4.2 8602 區間相交問題(必做)

4.2 8602 區間相交問題(必做)

4.2  8602 區間相交問題(必做)

時間限制:1000MS  記憶體限制:1000K
提交次數:1966 通過次數:468

題型: 程式設計題語言: G++;GCC;VC;JAVA

Description

給定x軸上n個閉區間,去掉儘可能少的閉區間,使剩下的閉區間都不相交。

注意:這裡,若區間與另一區間之間僅有端點是相同的,不算做區間相交。

例如,[1,2]和[2,3]算是不相交區間。

輸入格式

第一行一個正整數n(n<=50),表示閉區間數。

接下來n行中,每行2個整數,表示閉區間的2個整數端點。

輸出格式

輸出去掉的最少的閉區間數。

輸入樣例

3

1020

1015

1215

輸出樣例

2

提示

這個問題基本等同於書本的活動安排問題。

#include <iostream>

#include<math.h>

using namespace std;

class Position

{

public:

   int start;

   int _end;

};

int main()

{

    intn;

   cin>>n;

   Position a[n];

   for(int i=0;i<n;i++)

    {

       cin>>a[i].start;

       cin>>a[i]._end;

    }

   int count=1;

   int cur=0;

   Position temp;

   for(int i=0;i<n-1;i++)

    {

       for(int j=i+1;j<n;j++)

       {

           if(a[i]._end>a[j]._end)

           {

                temp=a[i];

                a[i]=a[j];

                a[j]=temp;

           }

       }

    }

   for(int i=0;i<n;i++){

       if(a[cur]._end<=a[i].start)

       {

           count++;

           cur=i;

       }

    }

   cout<<n-count<<endl;

   return 0;

}