• 活动安排问题


    贪心算法
    先对活动按照结束时间升序排序,此处省略排序步骤
    贪心策略是:只要后者的开始时间大于等于前者的结束时间(即s[i]>=f[j])就选择
    #include <iostream>
    using namespace std;
    const int N=1005;
    int GreedySelector(int n,int s[],int f[], bool a[])
    {
        a[1]=true;
        int j=1;
        int cnt=1;
        for(int i=2;i<=n;i++){
            if (s[i]>=f[j]){
                a[i]=true;
                j=i;
                cnt++;
            }
            else a[i]=false;
        }
        return cnt;
    }
    int main()
    {
        int s[]={0,1,3,0,5,3,5,6,8,8,2,12};//开始时间
        int f[]={0,4,5,6,7,8,9,10,11,12,13,14};//结束时间
        bool b[N];
        int n=(sizeof(s)/sizeof(s[0]));
        cout<<"活动安排数量: "<<GreedySelector(n,s,f,b)<<endl;
        cout<<"安排如下:"<<endl;
        for(int i=1;i<=n;i++){
            if(b[i]) cout<<"活动 "<<i<<" :"<<s[i]<<"-"<<f[i]<<endl;
        }
        return 0;
    }
    View Code

     另一种函数传递数组并在函数中获取数组长度

    #include <iostream>
    using namespace std;
    const int N=1005;
    template<class T>
    int greedySelector(T& s,T& f,bool a[])
    {
        int n=sizeof(s)/sizeof(s[0]);//获得长度
        a[1]=true;
        int j=1;
        int cnt=1;
        for(int i=2;i<=n;i++){
            if (s[i]>=f[j]){
                a[i]=true;
                j=i;
                cnt++;
            }
            else a[i]=false;
        }
        return cnt;
    }
    int main()
    {
        int s[]={0,1,3,0,5,3,5,6,8,8,2,12};//开始时间
        int f[]={0,4,5,6,7,8,9,10,11,12,13,14};//结束时间
        bool b[N];
        int n=sizeof(s)/sizeof(s[0]);
        cout<<"活动安排数量: "<<greedySelector(s,f,b)<<endl;
        cout<<"安排如下:"<<endl;
        for(int i=1;i<=n;i++){
            if(b[i]) cout<<"活动 "<<i<<" :"<<s[i]<<"-"<<f[i]<<endl;
        }
        return 0;
    }
    View Code

    运行结果如下:

  • 相关阅读:
    Android 8.0 adb shell dumpsys activity activities | findstr mFocusedActivity 获取当前的 activity 显示空的
    spring-in-action_day01
    spring-in-action_day02
    spring-in-action-day04-配置属性 @ConfigurationProperties
    springmvc接收参数
    spring中Utils工具类注入问题
    Eclipse Push出现rejected
    Eclpis-cannot open git-receive-pack
    IO
    LinkedHashmap简要说明
  • 原文地址:https://www.cnblogs.com/wydxry/p/10205159.html
Copyright © 2020-2023  润新知