在时间段内选择尽可能多的活动(0~14)
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <memory.h>
using namespace std;
//
struct Extent
{
int a,b;
} A[10002];
/*
1 4
12 14
2 13
3 5
0 6
8 12
8 11
5 7
3 8
6 10
5 9
测试数据,n=11;
*/
bool cmp(Extent x,Extent y)
{
return x.b<=y.b;
}
int main()
{
int z,n,cnt,end;
int k[100];
memset(k,0,100);
cnt = 0;
end = -1;
cout<<"输入区间个数"<<endl;
scanf("%d",&n);
cout<<"分别输入各个区间的开始和结束时间"<<endl;
for(int i=0; i<n; i++)
scanf("%d%d",&A[i].a,&A[i].b);
sort(A,A+n,cmp);
for(int i=0; i<n; i++)
{
if(end < A[i].a)
{
k[i]=1;
end = A[i].b;
cnt++;
}
}
cout<<"输出"<<endl;
printf("%d\n",cnt);
for(int i=0;i<n;i++){
cout<<k[i]<<" ";
}
return 0;
}