7-18 活动安排(贪心算法) (10 分)

学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使用。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。

现在给出n个活动使用礼堂的起始时间begin**i和结束时间end**i(begin**i<end**i),请你帮助办公室人员安排一些活动来使用礼堂,要求安排的活动尽量多。

输入格式:

第一行一个整数n(n≤1000);

接下来的n行,每行两个整数,第一个begin**i,第二个是end**i(begin**i<end**i≤32767)。

输出格式:

输出最多能安排的活动个数。

输入样例:

1
2
3
4
5
6
5
12 18
5 11
5 30
15 23
2 28

输出样例:

1
2
1
2
3
4
5
作者:严华云
单位:湖州师范学院
代码长度限制:16 KB
时间限制:400 ms
内存限制:64 MB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<bits/stdc++.h>
using namespace std;
class time{
public:
int start;
int end;
};
int main(){
int n,number=0,now=0;
cin>>n;
class time a[n];
for(int i=0;i<n;i++){
cin>>a[i].start>>a[i].end;
}
sort(a,a+n,[](class time a,class time b){return a.end<b.end;});
for(int j=0;j<n;j++){
if(a[j].start>=now){
now=a[j].end;
number++;
}
}
cout<<number;
}

注:在dev c++运行时需设置编译环境


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!