package greedy;
import java.util.ArrayList;
import com.Goods;
import com.GoodsDAO;
import com.IGoods;
public class MGConcrete extends MGreedy {
IGoods goods = new GoodsDAO();
// 每次取单位价值最大的,经过此种方法,返回最大价值及其重量
@Override
public int MaxPerValue(ArrayList<Goods> goodsList,int maxCapacity) {
ArrayList<Goods> list = new ArrayList<Goods>();
// max用来记录背包能容纳的最大重量
int max = 0;
// 遍历ArrayList的标志变量
int index = 0;
list = goods.perValueList(goodsList);
for (@SuppressWarnings("unused") Goods goods : list) {
max += list.get(index).getWeigth();
// 最大价值
Value_MaxPerValue += list.get(index).getValue();
index++;
if(max + list.get(index).getWeigth() > maxCapacity)
break;
}
return max;
}
// 每次取价值最大的,经过此种方法,返回最大价值及其重量
@Override
public int MaxValue(ArrayList<Goods> goodsList,int maxCapacity) {
ArrayList<Goods> list = new ArrayList<Goods>();
// max用来记录背包能容纳的最大重量
int max = 0;
// 遍历ArrayList的标志变量
int index = 0;
list = goods.valueList(goodsList);
for (@SuppressWarnings("unused") Goods goods : list) {
max += list.get(index).getWeigth();
// 最大价值
Value_MaxValue += list.get(index).getValue();
index++;
if(max + list.get(index).getWeigth() > maxCapacity)
break;
}
return max;
}
// 每次取重量最小的,经过此种方法,返回最大价值及其重量
@Override
public int MinWeight(ArrayList<Goods> goodsList,int maxCapacity) {
ArrayList<Goods> list = new ArrayList<Goods>();
// max用来记录背包能容纳的最大重量
int max = 0;
// 遍历ArrayList的标志变量
int index = 0;
list = goods.weightList(goodsList);
for (@SuppressWarnings("unused") Goods goods : list) {
max += list.get(index).getWeigth();
// 最大价值
Value_MinWeight += list.get(index).getValue();
index++;
if(max + list.get(index).getWeigth() > maxCapacity)
break;
}
return max;
}
}
解决,while循环是在满足条件的最后一个元素结束循环。