
动态规划
奔跑的小蜗牛1992
这个作者很懒,什么都没留下…
展开
-
换钱的最少货币数
题目一:给定数组arr,arr中所有的值都为正数。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数。如 arr=[5,2,3], aim=20. 最少需要4张解题思路: 经典动态规划一般分为3部,先求dp[i][j]矩阵中第一列的值,然后求dp矩阵中第一行的值,最后再依次从左到右,从上到下求剩下的位置。C++ 代码如下所示#in原创 2016-11-05 14:02:24 · 656 阅读 · 0 评论 -
数组中最长连续序列
给定无序数组arr, 返回其中最长的连续序列的长度举例 a[7] = {2,3,4,1,5,7,100},最长的连续序列为[1,2,3,4,5],所以返回5.本文先假设此数组是有序的,其基本思路如下:简单来说,排序后我们只要遍历数组,检查当前值减1是否等于上一个值,如果等,增加当前连续序列的计数;如果不等,将当前计数与当前最大值比较,如果更优替换最大值, 并重置计数为1。具体到细节上,我们还要考原创 2016-11-07 15:36:46 · 2623 阅读 · 0 评论 -
最长递增子序列
题目: 给定数组arr,返回arr的最长递增子序列 举例 arr=[2,1,5,3,6,4,8,9,7],返回的最长递增子序列为[1,3,4,8,9]解答: 1.生成长度为N的数组dp,dp[i]表示在以arr[i]这个结尾的情况下,arr[0…i]中的最大递增子序列长度。 2.对第一个数arr[0]来说,令dp[0]=1,接下来从左到右依次算出每个位置的数结尾的情况下,最长递原创 2016-12-03 12:23:00 · 400 阅读 · 0 评论