贪心算法思想很简单:就是每一步都采取最优的做法,也就是每一步都选择局部最优解,最终得到的就是全局最优解。
例如假如有如下11个活动,如何使教室里面安排的活动最多。
当前开始时间大于 >= 上一个结束时间就可以被安排在教室里面
#include <iostream>
using namespace std;
#define RANGE 15
void greed_select (int start[], int end[] ,int length ,bool isArrange[]){
isArrange[1] = true;
int previous = 1;
for (int i = 2; i < length; i ++){
if (start[i] >= end[previous]){
isArrange[i] = true;
previous = i;
}
else
isArrange[i] = false;
}
for (int i = 1; i < length; i++){
if (isArrange[i])
cout << "活动:" <<i <<endl;
}
}
int main(){
int start[] = {0,1,3,0,5,3,5,6,8,8,2,12};
int end[] = {};
bool isArrange[RANGE];
greed_select(start,end,sizeof(start)/sizeof(int),isArrange);
}