package meiju;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class TanXin {
/**
* 2)设计一个贪婪算法,解决如下装箱问题:设每个箱子容量为10,7个物品的容量分别是[8,7,5,4,3,2,1]。
* 请使用贪婪算法(Best Fit)用最少的箱子装下上述物品,并打印出每个箱子中的物品,例如:
C:\>_
输入物品容量:8,7,5,4,3,2,1
箱子中的物品为:
[1]8,2
[2]7,3
[3]5,4,1
* @param args
*/
public static void main(String[] args) {
List<Integer> list2 = new ArrayList<>();
list2.addAll(Arrays.asList(8,7,5,4,3,2,1));
//存储总的装箱组合
List<List<Integer>> lists = new ArrayList<>();
while(list2.size()>0){
//每次的装箱存储
List<Integer> listComponent = new ArrayList<>();
int sum=0;
for(int i=0;i<list2.size();i++){
sum+=list2.get(i);
if(sum<=10){
listComponent.add(list2.get(i));
}else{
sum-=list2.get(i);
}
}
list2.removeAll(listComponent);
lists.add(listComponent);
}
System.out.println(lists.toString());
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class TanXin {
/**
* 2)设计一个贪婪算法,解决如下装箱问题:设每个箱子容量为10,7个物品的容量分别是[8,7,5,4,3,2,1]。
* 请使用贪婪算法(Best Fit)用最少的箱子装下上述物品,并打印出每个箱子中的物品,例如:
C:\>_
输入物品容量:8,7,5,4,3,2,1
箱子中的物品为:
[1]8,2
[2]7,3
[3]5,4,1
* @param args
*/
public static void main(String[] args) {
List<Integer> list2 = new ArrayList<>();
list2.addAll(Arrays.asList(8,7,5,4,3,2,1));
//存储总的装箱组合
List<List<Integer>> lists = new ArrayList<>();
while(list2.size()>0){
//每次的装箱存储
List<Integer> listComponent = new ArrayList<>();
int sum=0;
for(int i=0;i<list2.size();i++){
sum+=list2.get(i);
if(sum<=10){
listComponent.add(list2.get(i));
}else{
sum-=list2.get(i);
}
}
list2.removeAll(listComponent);
lists.add(listComponent);
}
System.out.println(lists.toString());
}
}