装箱问题,贪心算法求近似最优解
import java.util.Arrays; import java.util.Comparator; //装箱问题,贪心算法 public class Enchase { public void test1() { Integer[] boxs={34,6,40,2,23,12,12}; int boxCaptation=40;//箱子容量 //倒序 Arrays.sort(boxs, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2-o1; } }); int unEnchase=boxs.length;//未装箱数 int minIndex=boxs.length-1;//最小的箱子指向 while (unEnchase>0) { for(int i=0;i<boxs.length;i++){ //位置箱子重量为零跳过 if(boxs[i]==0){ continue; } unEnchase--; while((boxCaptation-boxs[i])>=boxs[minIndex]){ int k=i+1; for(;k>i;k++){ //位置箱子重量为零跳过 if(boxs[k]==0){ continue; } //将箱子加上去,原来位置清零 boxs[i]+=boxs[k]; int temp=boxs[k]; boxs[k]=0; unEnchase--; if(boxs[i]>boxCaptation){ //超过最大可容纳体积,状态复原 unEnchase++; boxs[k]=temp; boxs[i]-=boxs[k]; continue; } //最小箱子更新 if(k==minIndex){ for(int y=minIndex;y>0;y--){ if(boxs[y]!=0){ minIndex=y; } } } break; } } } } //统计箱子数 int Boxcount=0; System.out.println("装箱结果:"); for(int i=0;i<boxs.length;i++){ System.out.print(boxs[i]+"\t"); if(boxs[i]==0){ continue; } Boxcount++; } System.out.println("\n箱子数:"+Boxcount); } public static void main(String[] args) { new Enchase().test1(); } }
以上就是本文的全部内容了,希望大家能够喜欢。
本文向大家介绍python 贪心算法的实现,包括了python 贪心算法的实现的使用技巧和注意事项,需要的朋友参考一下 贪心算法 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不
本文向大家介绍C++贪心算法实现活动安排问题(实例代码),包括了C++贪心算法实现活动安排问题(实例代码)的使用技巧和注意事项,需要的朋友参考一下 贪心算法 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后
本文向大家介绍C++ 搬水果贪心算法实现代码,包括了C++ 搬水果贪心算法实现代码的使用技巧和注意事项,需要的朋友参考一下 C++ 搬水果贪心算法实现代码 (1)题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆。每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。当然经过 n‐1 次合并之后,就变成
本文向大家介绍C语言实现链表贪吃蛇,包括了C语言实现链表贪吃蛇的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现贪吃蛇的具体代码,供大家参考,具体内容如下 用C语言链表写的贪吃蛇(程序设计时做的,做的不好大佬勿喷) 借助游戏内容分析贪吃蛇所需的功能主要包括这几块: 1.移动光标模块 2.打印地图模块和基本规则信息 读取最高分文件 3.打印初始蛇模块 打印时给予蛇的初始移动方向
主要内容:贪心算法的实际应用《 算法是什么》一节讲到,算法规定了解决问题的具体步骤,即先做什么、再做什么、最后做什么。贪心算法是所有算法中最简单,最易实现的算法,该算法之所以“贪心”,是因为算法中的每一步都追求最优的解决方案。 举个例子,假设有 1、2、5、10 这 4 种面值的纸币,要求在不限制各种纸币使用数量的情况下,用尽可能少的纸币拼凑出的总面值为 18。贪心算法的解决方案如下: 率先选择一张面值为 10 的纸币,可以
本文向大家介绍C语言实现K-Means算法,包括了C语言实现K-Means算法的使用技巧和注意事项,需要的朋友参考一下 一、聚类和聚类算法 聚类,就是将数据对象划分成若干个类,在同一个类中的对象具有较高的相似度,而不同的类相似度较小。聚类算法将数据集合进行划分,分成彼此相互联系的若干类,以此实现对数据的深入分析和数据价值挖掘的初步处理阶段。例如在现代商业领域,聚类分析算法可以从庞大的数据集合中对消