#include<iostream>//题目思路:要使完整观看的节目最多,则要每个节目结束的时间最短
using namespace std;
int main()
{
int n,i,j,p,t;
while(cin>>n)
{
int ti_s[100],ti_e[100];//记录节目开始和结束的时间
int s=1;//记录可以完整观看的节目个数,因为程序递增前已有第一个节目,故s初值为1
if(n==0)
exit(0);
else
{
for(i=0;i<n;i++)
cin>>ti_s[i]>>ti_e[i];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(ti_e[j]>ti_e[j+1])//将节目的结束时间递增排序
{
p=ti_e[j];
ti_e[j]=ti_e[j+1];
ti_e[j+1]=p;
t=ti_s[j];//相应的开始时间也要调换哦
ti_s[j]=ti_s[j+1];
ti_s[j+1]=t;
}
j=0;//经过前面的排序,第一个节目的结束时间一定是最早的
for(i=1;i<n;i++)
{
if(ti_s[i]>=ti_e[j])//后一个节目的开始时间一定要比前一个的结束时间大
{
j=i;
s++;
}
}
cout<<s<<endl;
}
}
return 0;
}
杭电ACM2037C++
最新推荐文章于 2022-12-31 20:10:03 发布