2 18 陣列分割

2022-06-07 01:00:11 字數 906 閱讀 9642

解法:

// 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...