
DP-动态规划
love music.
中山大学计算机博士在读,曾就职于腾讯等公司,目前从事AI多模态大模型研究。
展开
-
C++ 实现 0-1 背包问题
参考链接:https://blog.youkuaiyun.com/chengonghao/article/details/519157531.什么是动态规划首先介绍一下动态规划...设计一个动态规划算法,通常可按照以下几个步骤进行:(1) 找出最优解的性质,并刻画其结构特征。(2) 递归地定义最优解的值(3) 以自底而上的方式计算出最优值(4) 根据计算最优值时得到的信息,构...原创 2018-08-23 16:52:01 · 23029 阅读 · 8 评论 -
leetcode 1143.最长公共子序列 (动态规划)
给定两个字符串text1 和text2,返回这两个字符串的最长公共子序列。一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字...原创 2019-10-10 13:16:29 · 761 阅读 · 0 评论 -
leetcode 139. 单词拆分(动态规划)
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode"...原创 2019-10-10 13:14:09 · 380 阅读 · 0 评论 -
leetcode 64. 最小路径和(动态规划)
给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解法:从左上开始,用动态规划的方法。思路参考leetcode 62https://blog...原创 2019-08-21 19:18:40 · 475 阅读 · 0 评论 -
leetcode 5.最长回文子串(动态规划)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解题思路链接:...原创 2019-08-12 16:44:27 · 407 阅读 · 0 评论 -
leetcode 300.最长上升子序列(动态规划)
674. 最长连续递增序列给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长...原创 2019-08-11 20:37:35 · 268 阅读 · 0 评论 -
多重背包问题
多重背包问题有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和...原创 2019-08-08 22:37:12 · 162 阅读 · 0 评论 -
完全背包问题
完全背包问题有N种物品和一个容量是V的背包,每种物品都有无限件可用。第i种物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有N行,每行两个整数vi,wi,用空格隔开,分别表示第i种物品的体积和价值。...原创 2019-08-08 17:15:34 · 377 阅读 · 0 评论 -
剑指Offer n个骰子的点数(动态规划)
题目描述把 n 个骰子扔在地上,所有骰子朝上一面的点数之和为 s。输入 n,打印出 s 的所有可能的值出现的概率。解题思路此题目解法很多,其中使用动态规划法最好理解,代码也比较简洁1.现在变量有:骰子个数,点数和。当有c个骰子,点数和为k时,出现次数记为dp(c,k)。那与c-1个骰子阶段之间的关系是怎样的?2.当我有c-1个骰子时,再增加一个骰子,这个骰子的点数只可能为1、2、3...原创 2019-05-14 20:26:39 · 624 阅读 · 0 评论 -
剑指Offer面试题10(题目二):青蛙跳台阶问题
一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。牛客网AC代码(递归):class Solution {public: int jumpFloor(int number) { if(number <= 0) return 0; else if(number == 1)...原创 2018-06-21 20:53:46 · 451 阅读 · 0 评论 -
PAT甲级 1045 Favorite Color Stripe(30 分)动态规划
1045 Favorite Color Stripe(30 分)Eva is trying to make her own color stripe out of a given one. She would like to keep only her favorite colors in her favorite order by cutting off those unwanted ...原创 2018-09-06 10:53:08 · 168 阅读 · 0 评论 -
PAT甲级 1007 Maximum Subsequence Sum 动态规划DP
1007 Maximum Subsequence Sum (25)(25 分)Given a sequence of K integers { N~1~, N~2~, ..., N~K~ }. A continuous subsequence is defined to be { N~i~, N~i+1~, ..., N~j~ } where 1 <= i <= j <...原创 2018-07-09 11:07:33 · 268 阅读 · 0 评论 -
leetcode 322. 零钱兑换(动态规划)
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明...原创 2019-10-10 20:11:13 · 322 阅读 · 0 评论