程式設計之美'陣列分割'和擴充套件
將乙個陣列劃分成兩個子陣列,要求他們的和最接近
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...