1.一和零:代码随想录
1.这里题目中描述的最大子集指的是子集中元素的个数最大,而不是子集中各个元素之和最大。
2.这种题目我感觉其实拿到题目的第一眼,你不会把它归为01背包问题,甚至是背包问题,还是要多刷几遍,让自己有一个条件反射。
3.本题中的onenum和zeronum相当于01背包中物品的重量,最后加的1相当于物品的价值。
4.要注意的是,本题先遍历物品,再遍历容量,而容量是二维数组的形式,所以相当于有三个嵌套的for循环,加上第一个for循环中有一个计算0,1个数的for循环,总共有4个for循环不能搞错了。
2.完全背包理论基础:代码随想录
1.完全背包和01背包的具体区别在于遍历顺序不同,完全背包是从小到大遍历,而01背包要从大到小遍历。
3.零钱兑换II.代码随想录
1.本题要掌握的一个概念就是“组合”与排列的概念与区别,“组合”不强调元素之间的顺序
而“排列”强调元素之间的顺序,具体例子可以看代码随想录上的例子。
2.在这种求组合方法数的题目中,由于递推公式为+=类型的,故对于for循环的遍历顺序不同,其代表的含义也不同,如若先遍历物品,再遍历重量的话,就是求组合数,而先遍历重量,再遍历物品的话,就是求组合数。如果先不理解的话就先记住。
3.在第一个遍历for循环的过程中,是i<coins.size(),而不是i<=coins.size()!!!!!!要不然会报超时的错误!!。