源代码实现:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int s[101]; //存放活动开始时间
int f[101]; //存放活动结束时间
bool a[101]; //判断该活动是否共存
int ActiveMange(int *s,int * f,bool *a,int n)
{
a[1] = 1;
int j = 1;
int count = 1; //计数器
for(int i = 2;i<=n;i++)
{
if(s[i]>f[j]) //下一个活动开始时间需要大于活动上一个结束时间
{
a[i] = 1;
j = i;
count++;
}
else
a[i] = 0;
}
return count;
}
int main()
{
int n;
cout<<"input n:"<<endl;
cin>>n;
memset(a,0,sizeof(a));
for(int i = 1;i<=n;i++)
{
cin>>s[i]>>f[i];
}
sort(f,f+n);
cout<<"可以在时间段安排多少个活动:"<<endl;
cout<<ActiveMange(s,f,a,n);
cout<<endl;
cout<<"安排活动时间的时间段:"<<endl;
for(int i = 1;i<=n;i++)
{
if(a[i] == 1)
{
cout<<"("<<s[i]<<","<<f[i]<<")"<<",";
}
}
return 0;
}