遇到求最值的算法问题,首先要思考的就是:如何穷举出所有可能的结果?
穷举主要有两种算法,就是回溯算法和动态规划,前者就是暴力穷举,而后者是根据状态转移方程推导「状态」。
如何将戳气球问题转化成回溯算法呢?其实就是想穷举戳气球的顺序,不同的戳气球顺序可能得到不同的分数,把所有可能的分数中最高的那个找出来。
回溯算法
1 | int res = Integer.MIN_VALUE; |
动态规划
1 | int maxCoins(int[] nums) { |
读了一些书,看了一些文章,编过一些小例程,搞了一些没有什么技术含量的开发工作。
遇到求最值的算法问题,首先要思考的就是:如何穷举出所有可能的结果?
穷举主要有两种算法,就是回溯算法和动态规划,前者就是暴力穷举,而后者是根据状态转移方程推导「状态」。
如何将戳气球问题转化成回溯算法呢?其实就是想穷举戳气球的顺序,不同的戳气球顺序可能得到不同的分数,把所有可能的分数中最高的那个找出来。
回溯算法
1 | int res = Integer.MIN_VALUE; |
动态规划
1 | int maxCoins(int[] nums) { |
微信支付