杭电2037
来源:互联网 发布:北京环鼎铭阳网络 编辑:程序博客网 时间:2024/05/20 09:21
本题是一道贪心算法的题目,这是属于贪心重的选择不相交区间,具体的内容这里不提,就讲下这道题的解题思路。
解决这类问题第一步排序,对时间的开头与结尾储存用两个数组分别a[ i ] , b[ j ]表示,对b[ j ]进行从小到大的排序,当对b数组进行排序时,对应的a也发生变化。当两个b相等时,根据a的大小对b进行排序。对b排好后,用b[j]与b[j]后的每个a[i]进行比较,如果a[i]>=b[j]时,就用一个变量几下,并且用该a[i]对应的b[j]替换原来的b[j]。经过一个for循环就可以得到结果了
我是新手
如果有错误,欢迎吐槽。
#include<stdio.h>int main(){ int a[105],b[108]; int i,j,k,n,m,t,L,q; while (scanf("%d",&n) != EOF) { if (n==0)break; L=0; for (i=1; i<=n; i++) { scanf("%d%d",&a[i],&b[i]); } for (i=1; i<=n; i++) { for (j=i+1; j<=n; j++) { if(b[i]>b[j]) {k=b[i]; b[i]=b[j]; b[j]=k; t=a[i]; a[i]=a[j]; a[j]=t; } else if (b[i]==b[j]) if (a[i]>a[j]) { k=b[i]; b[i]=b[j]; b[j]=k; t=a[i]; a[i]=a[j]; a[j]=t; } } } q=b[1];L=1; for (i=2; i<=n; i++) { if (a[i]>=q) { L++; q=b[i]; } } printf("%d\n",L); } return 0;}
0 0
- 杭电 2037
- 杭电 2037
- 杭电2037
- 杭电2037
- 杭电2037
- 杭电acm 2037
- 杭电 2037
- 杭电2037
- 杭电2037
- 杭电acm--2037
- 杭电2037
- 杭电2037
- 杭电2033-2037总结
- 杭电2037 计算几何
- 杭电2037的思路
- 杭电 2037 经典贪心
- 杭电2037解题报告
- java实现---杭电2037
- Andrew NG 机器学习课程笔记(一)
- 《炉石传说》架构设计赏析(7):使用ProtocolBuffers处理网络消息
- 浅谈Java中的浅克隆与深克隆
- 红米note4g版,Android4.4.4开启开发者模式
- 剑指offer 面试题19—二叉树的镜像
- 杭电2037
- 《JAVA与模式》之适配器模式
- 简单工厂模式 工厂模式 抽象工厂模式
- Oracle 11g完全卸载(Windows)
- 提高第18课时,实践5,发奖金
- 如何实现设计师眼里的虚线
- 一起talk Vim吧(第十一回:Vim分身刀法)
- oracle菜鸟日记4
- 用文件和链表实现学生信息管理