贪心思想题的解题报告
2014-01-18 16:45
162 查看
题目:
Description
“今年暑假不AC?”
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%...”
确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。
作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)
Input
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。
Output
对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。
Sample Input
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
Sample Output
5
题目大意:
输入喜欢节目的个数,然后输入各个节目的起止时间,要求看最多的节目。
解题思想:
本题可以考虑为贪心思想,可以将起止时间定义为一个二维数组,分别为起止时间,按照结束时间排序
先看早结束的节目。
代码如下:
[/b]
Description
“今年暑假不AC?”
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%...”
确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。
作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)
Input
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。
Output
对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。
Sample Input
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
Sample Output
5
题目大意:
输入喜欢节目的个数,然后输入各个节目的起止时间,要求看最多的节目。
解题思想:
本题可以考虑为贪心思想,可以将起止时间定义为一个二维数组,分别为起止时间,按照结束时间排序
先看早结束的节目。
代码如下:
[/b]
#include<stdio.h> main() { int a[101][2],n,i,j,k,num,t,temp1,temp2; scanf("%d",&n); while(n) { num=1; for(i=0;i<n;i++) { for(j=0;j<2;j++) { scanf("%d",&a[i][j]); } } for(i=0;i<n-1;i++)//选择法排序 { k=i; for(j=i+1;j<n;j++) { if(a[k][1]>a[j][1]) k=j; } if(k!=i) { temp1=a[k][1]; a[k][1]=a[i][1]; a[i][1]=temp1; temp2=a[k][0];//注意开始时间的交换 a[k][0]=a[i][0]; a[i][0]=temp2; } } t=a[0][1]; for(i=1;i<n;i++)//选择结束时间早的节目进行观看 { if(a[i][0]>=t) { t=a[i][1]; num++; } } printf("%d\n",num); scanf("%d",&n); } }
相关文章推荐
- 关于几种排序的结题报告
- 关于并查集题的解题报告
- hdu2037今年暑假不AC解题报告
- CPP环境【VIJOS1686】极品飞车
- cpp环境【VIJOS1698】导游
- G - Supermarket ——贪心+并查集优化时间复杂度
- D - Expedition POJ - 2431——桶排序+贪心+优先队列
- 关于火车进站的结题报告
- 关于二分题(晾干衣服)的结题报告
- 一块金条切成两半,是需要花费和长度数值一样的铜板的。比如长度为20的 金条,不管切成长度多大的两半,都要花费20个铜板。一群人想整分整块金 条,怎么分最省铜板。
- Mysql的row_format
- 动态规划-钢条切割问题
- Ratgeber - In 3 Tagen Zum Pilzzuchtprofi!
- Yii Framework 开发教程(2) Yii Web应用基础
- web app 开发必不可少的滑动插件 Flipsnap
- Linux--线程编程
- Yii Framework 开发教程(1) 第一个应用Hello World
- 手工添加Linux防火墙端口
- Win7系统出现乱码的解决办法
- webbrowser从内存中加载并显示页面内容