解题思路:运用贪心算法,贪心的策略是 选取结束时间最早的,然后计算能完整看的电视节目个数
代码实现:
#include<iostream>
#include<algorithm>
using namespace std;
struct time{
int s,e;
}a[105];
bool cmp(time a,time b)
{
return a.e<b.e;
}
int main()
{
int n;
while(cin>>n)
{
if(n==0)
break;
int i;
for(i=0;i<n;i++)
{
cin>>a[i].s>>a[i].e;
}
sort(a,a+n,cmp);
int ans=a[0].e;
int sum=1;
for(i=0;i<n;i++)
{ if(ans<=a[i].s)
{
sum++;
ans=a[i].e;
}
}
cout<<sum<<endl;
}
return 0;
}
遇到的bug: n等于0的情况没有考虑进去;
上一场节目的结束时间与下一场节目的开始时间相等没有考虑进去