【发布时间】:2018-10-21 17:46:02
【问题描述】:
我正在尝试解决一个简单的优化问题并提出了解决方案。只是想知道它是否正确。这是问题描述
例如,有一种车辆可以行驶一定的最大距离,例如 3000 英里,之后需要维修。有2个数组,一个outgoing数组和一个returning数组。每个数组元素表示距离。我必须从outgoing 数组和incoming 数组中找出两个数字,以最大限度地利用车辆。假设我可以使用总距离 3000,它是最好的或最接近它的。我已经为它编写了一个程序,并希望如果它是正确的或有缺陷的,我是否可以从其他人那里获得意见。
public class Vehicle {
public static void main(String[] args) {
Integer[] outgoing = {2710,300,2500,2800,700};
Integer[] returning = {2200,289,490};
int l1=0,l2=0;
Arrays.sort(outgoing, Collections.reverseOrder());
Arrays.sort(returning);
int range = 3000;
int max = 0;
int out = 0;
int ret = 0;
while(l1<outgoing.length && l2<returning.length) {
int sum = outgoing[l1]+returning[l2];
if (sum<=range && sum>max) {
max = sum;
out = outgoing[l1];
ret = returning[l2];
}
if(sum>range) {
l1++;
} else {
l2++;
}
}
System.out.println(max);
System.out.println(out);
System.out.println(ret);
}
}
我采用的方法是我以相反的顺序对outgoing 数组进行排序,并以自然顺序对returning 进行排序。然后我尝试通过从每个数组中选择一个元素来找到可能的最大总和。如果临时总和超过允许的最大距离,我将按降序移动数组的指针,否则按升序移动数组的指针。
【问题讨论】:
-
我不太确定您要达到的目标。您可以尝试编辑答案并澄清吗?您想要那些应该很快就可以维修的汽车吗?
-
为了更清楚地解释它,有一个车队与 Q 的部分关系不大。但是当一辆汽车被拣选交付时,它有一个最大距离的限制它可以行驶而不是服务。因此,目标是给定车队中的一辆具有行驶距离限制的汽车,该汽车应该采取什么样的行程来返回和返回路径。这有帮助吗?基本上选择一个传出距离和返回距离,以便在给定汽车的最大行驶距离约束的情况下最大限度地利用汽车
标签: java algorithm sorting merge