我有一些工作需要處理從兩個數組中添加數字。例如,如果輸入是這樣的:找到可能的最大數額
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;
}
假設數組1被dspeed和數組2被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
從您的描述中,不清楚你想完成什麼。您在描述問題和描述解決問題的方法之間交替。這將有助於通過提供樣本輸入和該輸入的樣本期望輸出來分離這兩個問題。 –
@Andreas sry,顯然沒有足夠簡明的表達 – Paul