摘要: 题目描绘:题目链接 题目中需要求解一个数组中等差数组的个数,这个问题可以利用动态规划的思路来分析。 三步骤: 1:问题归纳。题目需要求解等差数列的和,我们可以用一个数组保存前i个元素可以构成的等差数列的个数。dp[ i ],最后需要的时候再求和。 2:递归关系式的书写:等差数列无非要满足这个关系:a 阅读全文
posted @ 2018-09-23 16:31 SnailsCoffee 阅读(970) 评论(0) 推荐(1) 编辑
摘要: 题目描述:题目链接 对于求解一个十进制数转化为二进制时里面1的个数,可以先看一下概况: 十进制数 二进制数 1的个数 1 1 1 2 10 1 3 11 2 4 100 1 5 101 2 6 110 2 7 111 3 看上面的一系列数字的二进制中1的个数: 对于一个偶数 n ;其二进制组成最低位 阅读全文
posted @ 2018-09-23 15:51 SnailsCoffee 阅读(1348) 评论(0) 推荐(0) 编辑
摘要: 题目描述:题目链接 同样对于这个问题,我们可以考虑用动态规划来解决。 解决动态规划常见的三个步骤: 1:问题的归纳。对于 i,j 位置上的最短路径可以用d[ i ][ j ]表示。 2:归纳递推式:d[ i ][ j ] = Math.min( d [ i - 1 ] [ j ] , d [ i ] 阅读全文
posted @ 2018-09-23 15:04 SnailsCoffee 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 题目描述:题目链接 这道题目也是一道动态规划的题目: 分析一道动态规划的题目可以将解决问题的思路分为下面三个部分: 1:问题的描述。可以定义数组d[ i ] 用于表示第i -1家可以获得的最大金额。 2:给出递推公式:d[ i ] = max( d[i-1] , d[i-2] + nums[i] ) 阅读全文
posted @ 2018-09-23 14:12 SnailsCoffee 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 题目描述:买卖股票的最佳时机 题目要求求解能获得最大利润的方式? 可以定一个二维数组 d [ len ] [ 2 ] ,其中d[ i ][ 0 ] 表示前i天可以获得的最大利润;d[ i ][ 1 ]表示前i天中股票最低的价格。 因此可以得到一个递推公式: d[ i ] [ 0 ] = max(d[ 阅读全文
posted @ 2018-09-23 13:44 SnailsCoffee 阅读(183) 评论(0) 推荐(0) 编辑