程式設計之美 陣列分割

2021-06-18 16:19:57 字數 751 閱讀 5228

程式設計之美'陣列分割'和擴充套件

將乙個陣列劃分成兩個子陣列,要求他們的和最接近

1.長度要求相等的情況: 

2.長度沒有要求的情況:

都能用動態規劃解決

#include#includeusing namespace std;

void arraysplit1(int a, int n)//兩個子陣列長度要求相等

int k=n;

int i=n/2;

int j=sum/2;

while(dp[k][i][j] <0 )

j--;

int part = 0;

while(i>0) }

cout<=a[k-1] && dp[k-1][j-a[k-1]]>=0)

dp[k][j] = k;

else

dp[k][j] = dp[k-1][j];

} }int j=sum/2;

int k=n;

while(dp[k][j] < 0)

j--;

int part=0;

while(k>0)

else

} cout

arraysplit1(a,12);

arraysplit2(a,12);

getchar();

return 0;

}

程式設計之美 陣列分割

問題1 有乙個無序 元素個數為n的正整數陣列,要求 如何能把這個陣列分割為兩個子陣列,子陣列的元素個數不限,並使兩個子陣列之和最接近。解答 int sum 0 for i 0 i0 j 從最大的開始遍歷,是為了防止同乙個數選取多次 for j sum 2 j if dp j break return...

程式設計之美 陣列分割

問題 有乙個沒有排序,有2n個元素的陣列,要求把這個陣列分為兩部分,分別含有n個元素,並使兩個子陣列的和最接近。這裡的程式主要是計算這個和的值。比如陣列 計算後符合的分法是 和算出比較小的就可以了是 110 例如陣列 分開後是 和 思考方法 動態規劃 1 計算出陣列中所有元素的和,並把它除以2,這樣...

程式設計之美 陣列分割

一 題目概述 有乙個沒有排序,元素個數為2n的正整數陣列。要求把它分割為元素個數為n的兩個陣列,並使兩個子陣列的和最接近。假設陣列a 1.2n 所有元素的和是sum。模仿動態規劃解0 1揹包問題的策略,令s k,i 表示前k個元素中任意i個元素的和的集合。顯然 s k,1 s k,k s k,i s...