【贪心算法】:活动记录问题

原帖:http://blog.csdn.net/effective_coder/article/details/8736718

题目

这就是题目

思路

有着丰富编程经验的人知道,只要有思路,实现这个方案很简单
只要后一次活动的开始时间比前一次活动的结束时间晚,就认为后一次活动是可取的,否则往后遍历
初始值是:第一次

代码

#include <iostream>
using namespace std;
void GreedyChoose(int len,int *s;int *f,bool *flag);
int main(){
    int s[11] = {1,3,0,5,3,5,6,8,8,2,12};
    int f[11] = {4,5,6,7,8,9,10,11,12,13,14};
    bool mark[11]={0};
    GreedyChoose(11,s,f,mark);
    for(int i=0;i<11;i++){
        if(mark[i])
            cout<<i<<" ";
    }
    return 0;
}

void GreedyChoose(int len,int *s;int *f,bool *flag){
    flag[0] = true;
    int j=0;
    for(int i=1;i<len;++i){
        if(s[i]>=f[j]){
            flag[i] = true;
            j=i;
        }
    }
}

补录:还有一个问题叫做区间覆盖问题,跟这个问题思路都一致
详情见链接:http://blog.csdn.net/effective_coder/article/details/8736718

你可能感兴趣的:(编程,算法,namespace,遍历,经验)