【原创】最大的招聘会场数

题目描述:毕业季,很多大公司来学校招聘,招聘会分散在不同时间段,小明想知道自己最多能完整的参加多少个招聘会(参加一个招聘会的时候不能中断或离开)。

假设现在有n个招聘会,每个招聘会都有个起止时间,时间由从招聘会第一天0点开始的小时数表示,n <= 1000 。

返回:最多参加的招聘会的个数n。


举个例子:

现在有3场招聘会,他们的起始时间为:

9-10

10-20

8-15

返回:2

 

 

 1 #include 
 2 #include 
 3 #include 
 4 #include 
 5 #include 
 6 using namespace std;
 7 
 8 
 9 int forjob(vectorint,int> > &time)
10 {
11     if(time.size()==0)
12         return 0;
13     int num = 1;
14     int i,j,k,temp;
15     int begin,end;
16     end = time[0].second;
17     //只需要扫描每个时间段保证的情况下最大的num
18     for(i = 0;i19     {
20         temp = 1;
21         k = i;
22         begin = time[i].first;
23         while(k>0)
24         {
25             if(time[k].second <= begin)
26             {
27                 temp ++;
28                 begin = time[k].first;
29             }
30             k--;
31         }
32         j = i;
33         end = time[i].second;
34         while(j35         {
36             if(time[j].first >= end)
37             {
38                 temp++;
39                 end = time[j].second;
40             }
41             j++;
42         }
43         if(temp>num)num = temp;
44     }
45     
46     return num;
47    //返回能参加的招聘个数的数值n
48 }
49 
50 
51 //start 提示:自动阅卷起始唯一标识,请勿删除或增加。
52 int main()
53 {
54     vectorint ,int> > time;
55     int m,n;
56     while(cin >> m>> n)
57     {
58         pair<int,int > tmp = make_pair(m,n);
59         time.push_back(tmp);
60     }
61     cout << forjob(time) << endl;
62 }
63 //end //提示:自动阅卷结束唯一标识,请勿删除或增加。

 

 

这个题是pango网上的一个coding题,算是比较有意思的,我按题目中给的测试用例能够得到正确结果,但不知道提交后是ac还是别的

附链接:

http://hero.pongo.cn/OnlineCompiler/Index?ID=35&ExamID=35

 

准备好了再点,点开已经开始计时了

posted @ 2013-05-15 18:19  karlthas  阅读(212)  评论(0编辑  收藏  举报