
算法学习—动态规划
此专栏是我学习动态规划的过程以及题目,希望对跟我一样的小白有所帮助
ArchitectDream
good good study,day day up
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法学习——动态规划 例题:上台阶问题(java)
动态规划经典例题之上台阶问题:n阶台阶,一个人每次上一级或者两级台阶,问有多少种走完n级台阶的方法 动态规划思路的由来就是 暴力法——>记忆搜索法——>动态规划 我就是按照这个顺序来进行学习的希望对大家有所帮助 先是经典简单的暴力法解决: public class DTGH_UpTaiJie { /* 经典解法:暴力法 ...原创 2018-12-28 21:13:13 · 2312 阅读 · 0 评论 -
算法学习——动态规划 例题:最长公共子序列问题(java)详解过程
package DTGH; /* 最长公共子序列 一个给定序列的子序列是在该序列中删去若千元素后得到的序列 给定两个序列X和Y ,当另一-序列Z既是X的子序列又是Y的子序列时,称Z是序 列X和Y的公共子序列 最长公共子序列, . X=(A,B,C,B,D,A,B) Y= (B,D,C,A,B, A)●(B,C,B,A)...原创 2019-03-21 21:10:50 · 1140 阅读 · 0 评论 -
算法学习——动态规划 例题:背包问题(java)
题目: 一个背包有一定的承重W,用N件物品,每件都有自己的价值,记录在数组V中, 也都有自己的重量,记录在数组W中,每件物品只能选择要装入的背包还是不装入背包 , 要求在不超过背包承重的前提下选出物品的总价值最大 动态规划思想:假设物品从1到N,一件一件物品考虑是否加入背包 递推关系式: 1) j<w(i) V(i,j)=V(i-1,j) 2) j>=w(i) V(...原创 2018-12-30 16:44:43 · 901 阅读 · 0 评论 -
算法学习——动态规划 例题:矩阵最短路径(java)
给定一个矩阵m,从左上角开始每次只能向右或者向下走,最后到达右下角的位置, 路径上所有的数字累加起来就是路径的和,返回所有的路径中的最小的路径的和。 如果给定的m如大家看到的样子,路径1,3,1,0,6,1,0是所有路径中路径和最小的,所以返回12. 1 3 5 9 8 1 3 4 5 0 6 1 8 8 4 0 思路: 式子: m dp 1 3 5 9 ...原创 2018-12-28 21:15:06 · 3192 阅读 · 0 评论 -
算法学习——动态规划 例题:找零钱问题(java)
给定数组arr,arr中所有的值都为正数且不重复。 每个值代表一种面值的货币,每种面值的货币可以使用任意张, 在给定一个整数aim代表要找的钱数,求还钱有多少种方法 动态规划:首先我们设一个二维矩阵dp[arr.length][aim+1]dp[i][j]就是arr[0...i]钱组成j的方法种数 public class DTGH_ZhaoLingQian { public int...原创 2018-12-29 15:16:32 · 3813 阅读 · 0 评论 -
算法学习——动态规划 例题:最长公共子序列问题(java)
题目: 给定两个字符串str1和str2,返回两个字符串的最长公共子序列.例如,str1="1A2C3D4B56",str2="B1D23CA45B6A","123456"或者"12C4B6' 动态规划思想: 先用一个比,左边加一个字符右面加一个字符依次比较dp[i][j] dp[i][j]意思就是str1从0到i的字符和str2从0到j的公共子序列的个数 关系表达式思路: 如果str1[...原创 2018-12-30 16:41:07 · 1112 阅读 · 0 评论 -
算法学习——动态规划 例题:两字符串转换权最小问题(java)
题目 : 给定两个字符串str1和str2,再给定三个整数ic,dc和rc,分别代表插入, 删除和替换一个字符的代价。返回将str1编辑成str2的最小代价。比如,str1="abc",str2="adc",ic=5,dc=3,rc=2.从"abc"编辑成adc, 吧b替换成d是代价最小的所以返回2.再比如,str1="abc",str2="adc",ic=5,dc=3,rc=100.从abc编...原创 2018-12-31 17:41:03 · 1972 阅读 · 0 评论 -
算法学习——动态规划 例题:最长递增子序列(java)
给定数组arr,返回arr的最长递增子序列长度。比如arr=[2,1,5,3,6,4,8,9,7]最长递增子序列为, [1,3,4,8,9] ,所以返回这个子序列的长度为5,给定数组arr, 返回arr的最长所以返回这个子序列的长度。比如arr=[2,1,5,3,6,4,8,9,7] 最长递增子序列[1,3,4,8,9],所以返回这个子序列的长度为5 arr=[2,1,5,3,6,4,8,9,7...原创 2018-12-29 15:17:56 · 4205 阅读 · 0 评论 -
习题:捡水果(java 动态规划实现)
package lanqiaobei; import java.util.Scanner; /* 习题:捡水果 蒜头在玩一款游戏,他在一个山顶,现在他要下山,山上有许多水果,蒜头每下一个高度就可以捡起一个水果,并且获得水果的能量。山的形状如图所示: 3 1 2 6 2 3 3 5 4 1 这是一个高度为4的山,数字代表水果的能量。每次下一个高度,蒜头需要选择是往左下走,还是往右下走...原创 2019-03-03 17:57:46 · 564 阅读 · 0 评论 -
习题:杨辉三角(java 动态规划)
package lanqiaobei; import java.util.Scanner; /* 习题:杨辉三角 杨辉三角是二项式系数在三角形中的一种几何排列。它的每个数等于它上方两数之和,每行数字左右对称,由1 开始逐渐变大。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 ...原创 2019-03-01 17:10:59 · 724 阅读 · 0 评论 -
leetcode:139. 单词拆分(java动态规划)
package LeetCode; import java.util.List; /* 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = "leetcode", wordDict = ["leet", "c...原创 2019-03-07 10:58:35 · 579 阅读 · 0 评论 -
leetcode:买股票最佳时机(java动态规划)
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注...原创 2019-01-14 19:11:25 · 769 阅读 · 0 评论 -
习题:马踏过河卒(java 动态规划)
package lanqiaobei; import java.util.Scanner; /* 习题:马踏过河卒 A点有一个过河卒,需要走到目标B点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的C点) ,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图C点上的马可以控制9个点(图中的 P1,P2⋯P8和C)。卒不能通过对方马的控制点。 棋盘用...原创 2019-03-01 14:36:46 · 465 阅读 · 0 评论 -
leetcode:解码方法(java动态规划)
package LeetCode; /* 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数。 示例 1: 输入: "12" 输出: 2 解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。 示例 2: 输入: "226" 输出: 3 解释: 它可以...原创 2019-01-05 20:03:23 · 603 阅读 · 0 评论 -
leetcode:三角形最小路径和(java动态规划)
package LeetCode; import java.util.ArrayList; import java.util.List; /* 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11(即,2 + 3 + ...原创 2019-01-14 19:12:42 · 865 阅读 · 0 评论 -
leetcode:编辑距离(java动态规划)
题目: 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入: word1 = "horse", word2 = "ros" 输出: 3 解释: horse -> rorse (将 'h' 替换为 'r') rorse -> rose...原创 2019-01-12 14:40:18 · 650 阅读 · 0 评论 -
leetcode:不同路径(java动态规划)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格。有多少可能的路径? 说明:m 和 n 的值均不超过 100。 输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条...原创 2019-01-05 19:59:24 · 646 阅读 · 0 评论