我有两个相同大小的整数数组:a和b。它们都含有n种元素。
让我们说:
a = {1, 3, 5}, b = {2, 3, 4}
有一个函数根据这两个数字输出一个整数。计算整数的算法是随机的。但该函数需要两个整数。
问题所要求的是通过组合a中的一个元素和b中的一个元素直到使用所有元素(sum)而产生的最大整数。所以我需要找到一种方法来列出a和b的组合:...(x,y)= function(x,y)
a and b = f(1,2) + f(3,3) + f(5,4) or
f(1,2) + f(3,4) + f(5,3) or
f(1,3) + f(3,2) + f(5,4) or
f(1,3) + f(3,4) + f(5,2) ... and so on which produces n*(n-1) results.
我只是坚持如何将这些结合起来并找到最大的总和。我的解决方案是运行3个循环并将每个结果存储到一个数组中,并输出它们的最大值。但是,我在制作阵列时遇到了麻烦。有人可以帮帮我吗?
谢谢。
-------------- E D I T ---------------------------
我不需要找到两个元素的总和。 假设我有两个数组:
a = {1, 2, 3}, b = {5, 3, 6}
我需要在每个元素组合并在函数中处理后找到这两个数组的最大和。让我们做一个随机函数:
public static int randomFunc(int x, int y){
return x%(y+1);
}
然后,这些是可能的输出:
randomFunc(a[0], b[0]) + randomFunc(a[1], b[1]) + randomFunc(a[2], b[2]) = 6
randomFunc(a[0], b[0]) + randomFunc(a[1], b[2]) + randomFunc(a[2], b[1]) = 6
randomFunc(a[0], b[1]) + randomFunc(a[1], b[0]) + randomFunc(a[2], b[2]) = 6
randomFunc(a[0], b[1]) + randomFunc(a[1], b[2]) + randomFunc(a[2], b[0]) = 6
randomFunc(a[0], b[2]) + randomFunc(a[1], b[0]) + randomFunc(a[2], b[1]) = 6
randomFunc(a[0], b[2]) + randomFunc(a[1], b[1]) + randomFunc(a[2], b[0]) = 6
These answers are the same but you get the point. But out of these "outputs", it should
output the greatest one.
答案 0 :(得分:0)
这是一个快速实现,我写了两个for-each循环来计算最大总和。
public static void main(String []args){
int greatestSum = 0;
int[] a = {1, 3, 5};
int[] b = {2, 3, 4};
for(int i : a) {
for(int j : b) {
if ((i+j) > greatestSum)
greatestSum = i+j;
}
}
System.out.println(greatestSum);
}
答案 1 :(得分:0)
You can use this as a reference code. Can be tweaked a lot but you can get an idea.
List a = new ArrayList();
a.add(1);
a.add(3);
a.add(6);
List b = new ArrayList<Integer>();
b.add(4);
b.add(2);
b.add(7);
Hashtable result = new Hashtable<String,Integer>();
result.put("SUM",0);
for(int i=0;i<a.size();i++) {
for(int j=0;j<b.size();j++) {
int sum = ((Integer) a.get(i) + (Integer)b.get(j));
if( sum > (Integer) result.get("SUM")) {
result.put("SUM",sum);
result.put("PAIRA",a.get(i));
result.put("PAIRB",b.get(j));
}
}
}
System.out.println("Max Sum ="+result.get("SUM"));
System.out.println("PAIR = "+result.get("PAIRA") +" , "+result.get("PAIRB"));