赞
踩
题目背景: 那一年,这一年,青春散场,到毕业季,我们奔波着忙着找工作,来到招聘会上,看到黑压压的一大片人群.. 题目描述:毕业季,很多大公司来学校招聘,招聘会分散在不同时间段,小明想知道自己最多能完整的参加多少个招聘会(参加一个招聘会的时候不能中断或离开)。 假设现在有n个招聘会,每个招聘会都有个起止时间,时间由从招聘会第一天0点开始的小时数表示,n <= 1000 。 返回:最多参加的招聘会的个数n。 举个例子: 现在有3场招聘会,他们的起始时间为: 9-10 10-20 8-15 返回:2
这是英雄会的一个挑战题
下面是个人的实现方法,仅供参考,如有bug或者意见欢迎提出,共同交流
- #include <cmath>
- #include <cstdio>
- #include <vector>
- #include <iostream>
- #include <algorithm>
- using namespace std;
-
- bool cmp(const pair<int,int> &tmpa,const pair<int,int> &tmpb )
- {
- if (tmpa.second<tmpb.second)
- {
- return 1;
- }
- else if (tmpa.second==tmpb.second)
- {
- if (tmpa.first<tmpb.first)
- {
- return 1;
- }
- else
- return false;
- }
- else
- return 0;
-
-
- // return tmpa.second<tmpb.second;
- }
- int forjob(vector<pair<int,int> > &time)
- {
- sort(time.begin(),time.end(),cmp);
- //返回能参加的招聘个数的数值n
- int countNum=0;
- int endNum=-1;
- int SizeNum=time.size();
- for (int i=0;i<SizeNum;i++)
- {
- if (endNum<=time[i].first)
- {
- endNum=time[i].second;
- countNum++;
- }
-
- }
-
- return countNum;
- }
-
-
- bool operator<(const pair<int,int> &tmpa,const pair<int,int> &tmpb)
- {
- if (tmpa.second<tmpb.second)
- {
- return true;
- }
- else if (tmpa.second==tmpb.second)
- {
- if (tmpa.first<tmpb.first)
- {
- return true;
- }
- }
- else
- return false;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- vector<pair<int,int> > TimePair;
- pair<int,int> num1(2,8);
- pair<int,int> num2(3,4);
- pair<int,int> num3(2,5);
- pair<int,int> num4(5,8);
- pair<int,int> num5(8,20);
- TimePair.push_back(num4);
- TimePair.push_back(num1);
- TimePair.push_back(num2);
- TimePair.push_back(num3);
- TimePair.push_back(num5);
- int Num=forjob(TimePair);
- cout<<Num<<endl;
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。