果然, 刷了十几道leetcode后, 我的算法, 才算正式进入了幼儿园. 真理啊, 把算法导论读一万遍, 不刷leetcode, 肯定学不会算法.
状态表
** 足够表达上一个子解.
状态转移方程
** 由之前几个子解, 得到当前解.
窍门
** 穷举法, 列出那些可以用int表示. 一切都离不开循环, 循环离不开int
举例
- 钢条切割问题
** 难点在于, 每次切割K长度, 和子结果比较
** 一维数组+递归 或 二维数组()
** 自顶向下 vs 自底向上 - 0-1背包问题
** dp[放了物品i][背包容量j] - 最长公共子序列
** 最好的方法, 是举例. 列出一个随机的测试用例, 用手把结果算出来; 状态转移方程自然就OK了. - 鸡蛋掉落
** 属于语言比较抽象的算法
算法心得
- 不要纠结于必须从大到小排序, 或者从小到大. [Leetcode 360. 有序转化数组 有感]