12 1 3 3 4 0 7 3 8 15 19 15 20 10 15 8 18 6 12 5 10 4 14 2 9 0
5
这是一个典型的贪心算法,思路是:将结束时间从小到大排序,如果下一个节目的开始时间正好排在前一个后面,就可以观看,这样下去就可以找出能看的最多的节目
代码实现
#include<stdio.h>
struct d
{
int n;
int m;
};
int main()
{
struct d jiemu[100],t;
int n,i,j,cnt;
while(~scanf("%d",&n)&&n)
{
cnt=1;
for(i=0;i<n;i++)
scanf("%d%d",&jiemu[i].n,&jiemu[i].m);
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(jiemu[j].m>jiemu[j+1].m)
{
t=jiemu[j];
jiemu[j]=jiemu[j+1];
jiemu[j+1]=t;
}
t.m=jiemu[0].m;
for(i=1;i<n;i++)
{
if(jiemu[i].n>=t.m)
{
cnt++;
t.m=jiemu[i].m;
}
}
printf("%d\n",cnt);
}
return 0;
}原文地址:http://blog.csdn.net/blue_skyrim/article/details/46417473