416
这道题是0-1背包的问题,题意可以转化为背包容量为sum/2,存放的最大价值也是sum/2。dp[i]表示容量为i的背包存放的最大价值是dp[i],如果dp[i]==sum/2,那就返回true,否则返回false。递推关系是dp[j]=max(dp[j-nums[i]+nums[i]],dp[j])。本题绕的地方在于容量为sum/2,最大价值也是sum/2,需要分辨清楚。
32
这道题用栈来解答,如果碰到左括号就把对应的下标入栈,如果碰到右括号就对应的下标出栈,计算长度就把当前遍历的下标减去栈顶元素。如果右括号多于左括号,栈中就会出现空栈,那就把对用的右括号下标入栈,记录不能匹配的下标,这样计算长度的时候栈顶就是不能匹配的最后一个元素了。
62
这道题是二维dp,dp[i][j]表示走到第i行第j列处有dp[i][j]种方法,递推关系是dp[i][j]=dp[i-1][j]+dp[i][j-1]。在遍历之前需要对第一行和第一列初始化,初始化值均为1。