贪心法基本入门

/*
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),
表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),
分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示
。n=0表示输入结束,不做处理。

*/

 

求观看完整节目的最大个数

#include<stdio.h>
typedef struct Node{
    int start;
    int end;
}time[110];

void main()
{
    int n;    
    while(scanf("%d",&n)==1 && n<=100 && n>0)
    {
        int i,j,k;
        time kk;
        for(i=0;i<n;i++)
            scanf("%d%d",&kk[i].start,&kk[i].end);
        for(i=0;i<n;i++)
            for(j=i+1;j<n;j++)
                if(kk[i].end>kk[j].end)
                {
                    int temp=kk[i].start;
                    kk[i].start=kk[j].start;
                    kk[j].start=temp;

                    temp=kk[i].end;
                    kk[i].end=kk[j].end;
                    kk[j].end=temp;
                }

                int s=0;
                int count=0;
                for(k=0;k<n;k++)
                {
                    if(kk[k].start>=s)
                    {
                        count++;
                        s=kk[k].end;
                    }
                }

                printf("%d\n",count);
    }

}

 

posted @ 2016-06-11 17:54  ly_rabbit  阅读(341)  评论(0编辑  收藏  举报