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