活动安排问题贪心算法c++代码
时间: 2023-11-19 09:56:41 浏览: 103
活动安排问题是指在一组互相竞争的活动中,选择出最大的相容活动子集。贪心算法的思路是优先选择结束时间早的活动,因为结束时间早的活动留下的空闲时间多,可以给其他活动提供更多机会。通过这种方式,可以找到一个最大的相容活动子集。以下是C++代码实现:
```
#include<iostream>
using namespace std;
void sort(int n,int s[],int f[]) {
int a,b,i,j;
for(i=1;i<=n;i++) {
for(j=i+1;j<=n;j++) {
if(f[i]>f[j]) {
a=f[i];f[i]=f[j];f[j]=a;
b=s[i];s[i]=s[j];s[j]=b;
}
}
}
}
int GreedySelect(int n,int s[],int f[],bool A[]) {
A[1]=true;
int j=1,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,s[50],f[50];
bool A[50];
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i]>>f[i];
}
sort(n,s,f);
cout<<GreedySelect(n,s,f,A)<<endl;
return 0;
}
```
阅读全文