活动安排问题

Posted ALLap

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了活动安排问题相关的知识,希望对你有一定的参考价值。

题意: 

  假设现在有N项工作,分别在 Si 时刻开始,在 Ti 时刻结束,对于每项工作可以选择做或者不做,但不可以同时选择时间重叠的工作(即使是开始的瞬间和结束的瞬间重叠也是不允许的)。要求尽可能的多做几件事,那么最多能做几件事呢?

  关键在于选择的策略:

  优先选择时间最少的?F

  优先选择开始最早的?F

  优先选择最早结束!!Y

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 struct Act
 5 {
 6     int start;
 7     int end;
 8 };
 9 bool compare(Act a,Act b)
10 {
11     return a.end<b.end;//优先选择最早结束的
12 }
13 
14 int main()
15 {
16     int n;
17     while(cin>>n)
18     {
19         Act *act=new Act[n+1];
20         act[0].start=-1;
21         act[0].end=-1;
22         for(int k=1;k<=n;k++)
23             cin>>act[k].start>>act[k].end;
24         sort(act,act+(n+1),compare);
25         int num=0;
26         int i=0;
27         for(int j=1;j<=n;j++)
28         {
29             if(act[j].start>act[i].end)
30             {
31                 i=j;
32                 num++;
33             }
34         }
35         cout<<num<<"\n";
36         delete []act;
37     }
38     return 0;
39 }

 

以上是关于活动安排问题的主要内容,如果未能解决你的问题,请参考以下文章

当活动被破坏但我必须继续执行片段中的代码时该怎么办?

如何从活动中更改片段中视图的可见性

Android 片段和活动

如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用

如何从主要活动中替换片段

OnDetach/onAttach 片段重新创建片段活动