当前位置:   article > 正文

最长时间序列_寻找最长事件序列

寻找最长事件序列

已知N个事件的发生时刻和结束时刻(见下表,表中事件已按结束时刻升序排序)。一些在时间上没有重叠的事件,可以构成一个事件序列,如事件{2,8,10}。事件序列包含的事件数目,称为该事件序列的长度。请编程找出一个最长的事件序列。

输入:第一行为事件的个数N,以下共输入N行,每一行都有两个整数构成,第一个整数为事件开始时间,第二个整数为事件结束时间,时间的编号为其所在的行数(从0开始计数)。

输出:输出一个最长的时间序列

输入示例:

12

1  3

3  4

0  7

3  8

2  9

5  10

6  12

4  14

10  15

8  18

15  19

15  20

输出示例:

0  1 5  8  10

  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4. int used[100]; //是否选取该区间
  5. int begin[100];
  6. int end[100];
  7. int main(){
  8. int N;
  9. int i,j;
  10. cin>>N;
  11. memset(used,0,sizeof(used));
  12. for(i=0;i<N*2;i++){
  13. if(i%2==0)
  14. cin>>begin[i/2];
  15. else
  16. cin>>end[i/2];
  17. }
  18. used[0]=1;
  19. j=0;
  20. for(i=1;i<N;i++){
  21. if(end[j]<=begin[i]){
  22. used[i]=1;
  23. j=i;
  24. }
  25. }
  26. for(i=0;i<N;i++){
  27. if(used[i])
  28. cout<<i<<" ";
  29. }
  30. return 0;
  31. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/741271
推荐阅读
相关标签
  

闽ICP备14008679号