贪心算法用处很多 在活动安排问题中是个很好的列子,
设有n个活动的集合E=[1,2,...,N],其实每个活动使用同一资源,如演唱会。每个活动都有一个开始时间和一个结束时间,这里用si,fi来表示,如果si大于另一个活动的fj,那么叫做活动i和活动j是相容的。这可以安排活动。
核心代码:
#include "stdio.h"
void GreedySelector(int n , int s[], int f[],bool a[])
{
a[1] =true;//表示能否进行安排活动
int j = 1;
for(int i = 2; i <= n; i++)
{
if(s[i] >= f[j]) //如果si(i活动的开始时间) 大于 fj(j活动的结束时间)
{
a[i] = true; j = i;//可以进行安排,且把i赋给j(类似于j++)
}
else
{
a[i] = false;
}
}
}