- 简单化:size可以不同,返回小数组的累加和
- 思路:两数组的和最接近=》小的数组的和最接近1 /2整体和=》 #背包问题
- 思路:从[i~len]能自由选择,结果不超过rest
- 传入传出:i,rest
- base case:i=lenreturn 0;
- 限制:rest-arr[i]>0
- 原版:size相同,返回小数组的累加。跟简单版的差别在于多了一个pick数限制
- 思路:从[i~len]能自由选择,结果不超过rest,且pick数要为len/2
- base case:i->len,rest->0,pick=len/2
- 传入传出:i,rest,pick
- 限制:i->len,pick>0,rest>0
- 决策:
- i->len,pick没选够,return 0
- i没到len,pick已经选够了,则不走“选当前数字”的选项
- i没到len,rest-arr[i]<0也是不走“选当前数字”的选项
- 化简(总结):等i->len时pick=0,则返回0,否则返回-1 。在上层处理不可达的情况。只要rest-arr[i]>0就可以选当前数
- 不对pick进行减枝