1004 Problem E
“今年暑假不AC?”
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%...”
题目概述:在一段连续时间内,判断可以观看完整电视节目的最大数目。
思路:要求可以最大数目,即令每一节目,按结束先后进行排序,先结束的
排在最前面,然后按后续节目开始时间,与前一节目结束时间比较,在不冲突的
情况下得到能够观看完整节目的最大数。
感想:因为之前学习贪心,这样的例子,作为最典型的题目出现,所以做
起来并没有太大的难度,只要在排序之后,完成比较,代码并没有什么难度!
#include<iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct Ti{
int s;
int e;
};
bool cmp(const Ti &a,const Ti &b){
if(a.e<=b.e) returntrue;
return false;
};
int main(){
int i,n;
Ti pro[101];
while(cin>>n&&n!=0){
for(i=0;i<n;i++){
cin>>pro[i].s>>pro[i].e;
}
sort(pro,pro+n,cmp);
int m=1,preEnd=0;
for(int j=1;j<n;j++)
if(pro[j].s>=pro[preEnd].e){
m++;
preEnd=j;
}
cout<<m<<endl;
}
return 0;
}