时间:2021-05-20
装箱问题,贪心算法求近似最优解
复制代码 代码如下:
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();
}
}
以上就是本文的全部内容了,希望大家能够喜欢。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C语言基于贪心算法解决装箱问题的方法。分享给大家供大家参考,具体如下:问题描述:有一些箱子,容量为V,同时有n个物品,每个物品有一个体积(小于等于
本文实例讲述了Python基于贪心算法解决背包问题。分享给大家供大家参考,具体如下:贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择
本文实例讲述了JS使用贪心算法解决找零问题。分享给大家供大家参考,具体如下:前面介绍了JS贪心算法解决背包问题,这里再来看看找零问题的解决方法。在现实生活中,经
本文实例讲述了JS基于贪心算法解决背包问题。分享给大家供大家参考,具体如下:贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加
贪心算法贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪