题目描述
明年就要考研了,我给自己制定了学习科目,
但是我该怎么合理的安排我的学习时才能让一天学习到的内容最多呢?
输入描述:
第一行输入学习科目数:n
之后连续输入n行,每行包括两个数据:科目开始时间和结束时间
n=0表示输入结束,不做处理
输出描述:
输出所能完整学习到的最大科目数
示例1
输入
6
8 12
6 11
14 15
16 18
15 20
19 22
0
输出
4
备注:
时间输入为整点,例如:1表示1点,13表示下午一点
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1010;
struct acm
{
int l,r;
}e[N];
int cmp(acm x,acm y)//用结构体名来定义结构体类型变量,才可以调用结构体里面的变量
{
return x.r<y.r; //比较右边的,因为右边最够小才可以装入更多的
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>e[i].l>>e[i].r;
}
sort(e,e+n,cmp);
int sum=1;
int k=0;
for(int i=1;i<n;i++)
{
if(e[i].l>=e[k].r)//下一个的左边大于上一个的右边
{
sum++;
k=i;
}
}
cout<<sum;
return 0;
}