您的位置:首页 > 其它

【千里码】Task25-老王装货

2016-07-20 11:08 369 查看


载重上限5t,求最大载重量的方案

虽然知道这是背包问题,对于算法一脸懵逼的我还是只能一个个遍历过去,源代码手贱删了,下面贴个评论区和我差不多思路的代码

public class Answer25 {

static int good[] = {509, 838, 924, 650, 604, 793, 564, 651, 697, 649, 747, 787, 701, 605, 644};
static int LIMIT = 5000;

public static void main(String[] args) {
int maxWeight = 0;
String maxMethod = "";

for (int i = 0; i < 1 << good.length; i++) {
String method = Integer.toBinaryString(i);

while (method.length() < good.length) {
method = "0" + method;
}
int sum = 0;
for (int j = 0; j < method.length(); j++) {
if (method.charAt(j) == '1') {
sum += good[j];
}
if (sum > LIMIT) {
break;
}
}
if (sum <= LIMIT && sum > maxWeight) {
maxWeight = sum;
maxMethod = method;
}
}
String result = "";
int resultWeight = 0;
for (int j = 0; j < maxMethod.length(); j++) {
if (maxMethod.charAt(j) == '1') {
result += (j + 1) + "-";
resultWeight += good[j];
}
}
if (result.length() > 0) {
result = result.substring(0, result.length() - 1);
}
System.out.println(result);
System.out.println(resultWeight);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  背包问题