为了账号安全,请及时绑定邮箱和手机立即绑定

贪心——今年暑假不AC(hdu2037)

标签:
算法

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=2037

题目描述:

在一天的时间里,尽可能的看最多的完整节目

输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i

个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。


解题思路:

这是一个很典型的贪心问题,不管节目有多少,持续时间多长,第一次看的节目一定是最早结束的,然后再在剩余的节目里选出满足(开始时间>第一次选取的节目结束时间)

这个条件里最早结束的节目,以此类推。


#include <stdio.h>int main(){int i,j,k,n,a[101],b[101],l,m[101],p,o,t,d;while(scanf("%d",&n)!=EOF&&n!=0){for(i=0;i<n;i++){scanf("%d%d",&a[i],&b[i]);}for (i=1; i<n; i++){for (j=0; j<n-i; j++){if (b[j]>b[j+1]){				k=a[j];l=b[j];a[j]=a[j+1];b[j]=b[j+1];a[j+1]=k;b[j+1]=l;}}}int A[101]={0};for(i=0;i<n;i++){d=i-1;int p=0;while(d>=0){if(a[i]>=b[d]){if(p<A[d])p=A[d];}d--;}A[i]=p+1;	}				int t=A[0];for(i=0;i<n;i++)if(t<A[i])t=A[i];printf("%d\n",t);}return 0;}

 


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消