解题报告之——大牛也会不A题

来源:互联网 发布:access数据库查询 编辑:程序博客网 时间:2024/05/22 11:54

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2037

简单的贪心问题,考虑到要使得看的节目数最多,即尽可能选择结束时间早的节目观看,并且需要满足该节目开始时间大于等于已看节目结束时间。

由此可以得到如下算法:

1.首先将节目单按照结束时间升序排序。

2.从结束时间最早的节目开始查找,若此节目开始时间大于等于已看节目的结束时间,就计数+1。

最终可得到结果。

#include<stdio.h>int a[10002];int b[10002];void Sort(int a[], int n){    int i,j,tmp,tmp2;    for(i = 1; i < n; i++)    {        tmp = a[i],tmp2=b[i];        for(j = i; j > 0 && b[j-1] > tmp2; j--)            a[j] = a[j-1],b[j]=b[j-1];        a[j] = tmp,b[j]=tmp2;    }}int main(){    int n,i,min=0,c=1;    while(1)    {scanf("%d",&n);    if(n==0) break;    c=1;    for(i = 0; i < n; i++)       scanf("%d%d",&a[i],&b[i]);    Sort(a,n);    for(i=1,min=b[0];i<n;i++)    {        if(a[i]>=min) min=b[i],c++;    }    printf("%d\n",c);    }    return 0;}



0 0
原创粉丝点击