题干解析 题设给予我们一个数组,要求我们进行判定所给数组能够拆分为两个总和一致的数组。 算法思路 首先大前提,我们必须知道这个数组所有值的总和,记作sum,当且仅当sum是个偶数时我们才可能将数组拆分为两个等和子集。 同时我们转化问题为,在数组中选择一定数量的元素,使这些元素的总和大小为。于是我们将问题转化为0/1背包问题。设定状态值为dp[i][j]表示使用前i个元素能否填满大小为j的背包。 于是我们有状态转移方程: 设定初始值dp[0][0] = true;开始DP计算即可。 同时由于DP过程状态转移方程只涉及i与i-1,因此可进行滚动优化内存。 实现代码 class Solution ...