解法:
// 2.18 陣列分割
class test
初始狀態:
boolean dp[i][j] = false , for all i && all j
dp[i][0] = true , for all i , 表示不選取任何整數,則被選取的整數的和為0
dp[0][nums[0]] = true , 表示當i==0的時候,只有乙個正整數可以被選取,因此dp[0][nums[0]] = true
*/int arr = new int;
int arr2 = new int;
system.out.println(canpartition(arr));
} public static void print(boolean arr)
system.out.println();
} }public static boolean canpartition(int nums)
if(sum%2 != 0) return false;
int target = sum/2;
if(maxnum > target) return false;
boolean dp = new boolean[n][target+1];
for(int i = 0;i= num) dp[i][j] = dp[i-1][j] | dp[i-1][j-num];
else dp[i][j] = dp[i-1][j];
}} print(dp);
return dp[n-1][target];
} /**
拓展問題:
如果陣列中有負數怎麼辦?
*/}
2 18 陣列分割
題目概述 有乙個沒有排序,元素個數為2n的正整數陣列。要求把它分割為元素個數為n的兩個陣列,並使兩個子陣列的和最接近。假設陣列a 1.2n 所有元素的和是sum。模仿動態規劃解0 1揹包問題的策略,令s k,i 表示前k個元素中任意i個元素的和的集合。顯然 s k,1 s k,k s k,i s k...
2 18 陣列分割
問題 有乙個沒有排序,元素個數為2n的正整數陣列。要求把它分割為元素個數為n的兩個陣列,並使兩個子陣列的和最接近。解法 假設陣列a 1.2n 所有元素的和是sum。模仿動態規劃解0 1揹包問題的策略,令s k,i 表示前k個元素中任意i個元素的和的集合。顯然 s k,1 s k,k s k,i s ...
《程式設計之美》 2 18 陣列分割
題目概述 有乙個沒有排序,元素個數為2n的正整數陣列。要求把它分割為元素個數為n的兩個陣列,並使兩個子陣列的和最接近。假設陣列a 1.2n 所有元素的和是sum。模仿動態規劃解0 1揹包問題的策略,令s k,i 表示前k個元素中任意i個元素的和的集合。顯然 s k,1 s k,k s k,i s k...