活动安排问题
活动安排问题是可以用贪心算法有效求解的很好的例子。该问题要求高效地安排一系列征用某一公共资源的活动。贪心算法提供了 一个简单、漂亮的方法,使尽可能多的活动能兼容地使用公共资源。
嗯嗯嗯嗯嗯~~~~~
先占个坑,把代码贴上来,文字描述以后再补
略略略略略~~~~~
代码实现如下:
#include<iostream>
using namespace std;
//按结束时间非递减序列排序
void sort(int n,int s[],int f[])
{
int a,b,i,j;
for(int i=1;i<=n;i++)
for(int 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[i]=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];
cout<<"请输入节目总数:";
cin>>n;
cout<<"请依次输入节目开始时间和结束时间";
for(int i=1;i<=n;i++){
cin>>s[i]>>f[i];
}
sort(n,s,f);
int sum;
sum=GreedySelect(n,s,f,A);
cout<<"安排节目个数为:"<<sum<<endl;
cout<<"节目的选取个数为:";
for(int i=1;i<=n;i++){
if(A[i])
cout<<i;
}
cout<<endl;
return 0;
}