gpt4 book ai didi

java - 找出可能的最大总和

转载 作者:行者123 更新时间:2023-12-01 09:00:50 25 4
gpt4 key购买 nike

我有一些工作需要处理将两个数组中的数字相加。例如,如果输入是这样的:

array1
202 167 178 18
array2
467 15 98 3

程序会将它们配对在一起,在这种情况下,较大的数字会覆盖较小的数字,使它们变得无关紧要。然后将所有大数相加得到总和。我已经解决了如何找到最小的和,但是最大的和似乎更难做到。如上面的示例,结果将是

467+202+167+178=1014

因为它们是四个最大的数字。(467 与 18 配对,202/167/178 与其余任何数字配对)
我想到了类似的事情

for(int n=numberofnumbers-1;n>n/2;n-=1)
{
if(array1[n]>=array2[n])
{
anotherarray[n]=array1[n];
}
else
{
anotherarray[n]=array2[n];
}
}

但是它会多次使用一个数字,并且输出将不正确。我需要一些帮助来了解如何使其按照我想要的方式工作。

编辑:所需的输入:

array1
202 167 178 18
array2
467 15 98 3

期望的输出:

1014

我从不工作的程序中得到了什么:

1338

编辑2:数字是通过另一种方法排序的。

编辑3:在查看了一些建议后,我想出了这个:

private int[] sorting(int[] dspeed,int[] pspeed)
{
int[] answer=new int[dspeed.length+pspeed.length];
int i=0, j=0, k=0;
while(i<dspeed.length&&j<pspeed.length)
answer[k++]=dspeed[i]<pspeed[j] ? dspeed[i++] : pspeed[j++];

while(i<dspeed.length)
answer[k++]=dspeed[i++];

while(j<pspeed.length)
answer[k++]=pspeed[j++];

return answer;

}

假设 array1 为 dspeed,array2 为 pspeed,以及

        final int[] ddspeed=sorting(dspeed, pspeed);
int answer=0;
for(int x=length-1;x>length/2;x--)
{
answer+=ddspeed[x];
}
System.out.println(answer);
break;

但是,我会得到毫无意义的答案。输入示例:

array1
1 2
array2
1 2

输出

0

最佳答案

最简单的方法是合并两个数组,对数组进行排序,然后添加数组的最后四个元素。显然,有更好的方法可以做到这一点,但因为我坚持使用您可以理解的最简单的方法。像这样:

import java.util.Arrays;

class Main {
public static void main(String[] args) {
int[] arr1 = { 202, 167, 178, 18 };
int[] arr2 = { 467, 15, 98, 3 };
int[] arr3 = new int[arr1.length+arr2.length];

for(int i=0;i<arr1.length;i++)
arr3[i]=arr1[i];

for(int i=0;i<arr2.length;i++)
arr3[arr1.length+i]=arr2[i];

Arrays.sort(arr3);

int len = arr3.length;

int sum = arr3[len-1]+ arr3[len-2]+ arr3[len-3]+ arr3[len-4];
System.out.println(sum);
}
}

你明白了,你可以根据你的要求修改它。

关于java - 找出可能的最大总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41685626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com