• 贪心算法java实现


    实例:

    活动安排问题:

    问题表述:设有n个活动的集合E = {1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si < fi 。如果选择了活动i,则它在半开时间区间[si, fi)内占用资源。若区间[si, fi)与区间[sj, fj)不相交,则称活动i与活动j是相容的。也就是说,当si >= fj或sj >= fi时,活动i与活动j相容。

    解决方案:

    使用贪心算法,按结束时间排序后,每次选择活动结束时间最小的一个,以尽可以的多的可以按排余下活动

    0-1背包问题:

    给定n种物品和一个背包。物品i的重量是Wi,其价值为Vi,背包的容量为C。应如何选择装入背包的物品,使得装入背包中物品的总价值最大?

    在选择装入背包的物品时,对每种物品i只有2种选择,即装入背包或不装入背包。不能将物品i装入背包多次,也不能只装入部分的物品i。

    解决方案:

    使用动态规划算法,每个物品有放和不放两种选择,看哪种方案更优,动态规划算法将问题划分为子问题,后面的子问题会使用到上一步的计算结果,以节省计算时间。0-1背包问题(要么放要么不放,不能放一部分,不适合使用贪心算法,因为有可能,余下背包的一些空间,导致整体单元价值偏低。动态规划算法实现见:http://blog.csdn.net/u011750989/article/details/12967575

    背包问题:

    与0-1背包问题类似,所不同的是在选择物品i装入背包时,可以选择物品i的一部分,而不一定要全部装入背包,1 <= i <= n。

    解决方案:

    使用贪心算法,每次选择单元价值最高的放入

    实现代码

    /*背包问题,非0-1背包问题
     * 建立物品类有两个属性:重量和价值
     * 加入arraylist
     * Collections.sort 自定义比较算法,按价值/重量,单位价值越高者越靠前
     * 
     * 再建个arraylist(result)存储上面各个物品该存入多少比率,比如1,该物品都放进背包
     * 0.5,放一半,0不放
     * 
     * int sum=0;//重量累计
     * int v=0; //价值累计
     * for i in arraylist  //已按单价排好序
     * 
     * if sum>=total
     * break;
     * 
     *物品i还能完全放进背包
     * else  if (sum+wi<=Total)
     * sum=sum+wi;
     * v=v+vi
     * result.add(1)
     * 
     *物品i只能放入部分了
     * else  if  sum+wi>total
     * v=v+(total-sum)/wi * v(i)
     * sum=total
     * result.add((total-sum)/wi)
     *  /
    /*
     * 活动安排问题
     * 建立个活动类,比如有活动名称,开始时间,结束时间
     * 放个arraylist
     * Collections.sort 自定义排序算法,按结束时间升序,越早越靠前
     * 
     * 建个结果表arraylist(result)
     * 
     *  result.add(list0])
     *  temp=list[0]
     * for j in arraylist+1  //从第二个活动开始
     * 
     * if j.开始时间>=temp.结束时间 
     *  result.add(list[j])
     *  temp=list[j]
     *   
     * 
     */

  • 相关阅读:
    @Builder注解有什么用?怎么用?
    adb连接切换到模拟器端口
    Hadoop学习记录2--hadoop的概述、部署、使用
    KMP算法
    【STL】:list的模拟实现
    CentOS 7 安装新版本的Git
    Web前端—网页制作(以“学成在线”为例)
    俺把所有粉丝显示在地图上啦~【详细教程+完整源码】
    [Codeforces] number theory (R1600) Part.8
    Let Users Edit PDFs Directly in the Browser
  • 原文地址:https://blog.csdn.net/eeeeety6208/article/details/127905628