![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
训练有素的咸鱼
Young·Saltedfish
(扬·索顿费斯)
P社大学历史系硕士
(History Master of Paradox University)
展开
-
1.数字三角形及动态规划
问题描述 (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路 径,使该路径所经过的数字的总和最大。 ●每一步可沿左斜线向下或右斜线向下走; ●1<三角形行数≤100; ●三角形中的数字为整数0,1,…99; . (图3.1-1)输入格式 文件中首先读到的是三角形的行数。 接下来描述整个三角形输出格式 最大总和(整数)样例输入573 88 1 02 7...原创 2018-07-06 15:23:30 · 300 阅读 · 0 评论 -
13.背包问题(完全背包,0/1背包)
上算法课的时候学到了背包问题。嗯,又是熟悉的配方,今天来复习一下。一、完全背包问题:问题:有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是c,价值是w。求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。和之前做过的LeetCode322,零钱兑换(https://blog.csdn.net/qq_40636117/ar...原创 2019-04-17 15:29:05 · 498 阅读 · 0 评论 -
12.零钱兑换 II
给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。注意:你可以假设0 <= amount (总金额) <= 5000 1 <= coin (硬币面额)<= 5000 硬币种类不超过500种 结果符合32位符号整数示例 1:输入: amount = 5, coins = [1, 2, 5]输出...原创 2018-12-23 00:31:06 · 1647 阅读 · 1 评论 -
10.打家劫舍 III
leetcode337 中等在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。...原创 2018-12-14 22:39:01 · 363 阅读 · 0 评论 -
11.目标和
给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例 1:输入: nums: [1, 1, 1, 1, 1], S: 3输出: 5解释: -1+1+1+1+1 = 3+1-1+1+1+1 ...原创 2018-12-18 14:51:04 · 317 阅读 · 1 评论 -
9.最小路径和
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。 思路:要想知道最小路径,不把网格所有点都走一次是不可能知道的,单凭是右点大数值还是...原创 2018-09-28 00:44:43 · 228 阅读 · 0 评论 -
5.不同的二叉搜索树
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 ...原创 2018-09-10 19:03:47 · 679 阅读 · 0 评论 -
8.最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n^2) 。 思路:把这个数组nums拆分成长度1,2,3 。。。n 的子序列,...原创 2018-09-17 16:44:18 · 155 阅读 · 0 评论 -
7.整数拆分
给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 ×3 ×4 = 36。说明:你可以假设n不小于 2 且不大于 58。这和《零钱兑...原创 2018-09-13 00:13:07 · 1245 阅读 · 0 评论 -
6.比特位计数
给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗? 要求算法的空...原创 2018-09-12 19:37:52 · 264 阅读 · 0 评论 -
4.使用最小花费爬楼梯
数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从c...原创 2018-08-07 10:45:28 · 1386 阅读 · 0 评论 -
3.打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃...原创 2018-08-04 22:15:37 · 243 阅读 · 0 评论 -
2.零钱兑换
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5] amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:...原创 2018-07-06 16:35:59 · 3644 阅读 · 0 评论 -
14.近似串匹配问题
问题:错误拼写检查,将字符串T修改为P,并且要求改动次数最少例子:求出将"hsppay"(T)改成”happy“(P)的最少改动次数分析:将字符串T改成P,有以下几种操作:(1)修改:将字符串T的某个字符修改了(2)删除:T比P要长,如果改成P,某些字符必须删除(3)增加:T比P要短,如果改成P,要增加某些字符通过上面三波操作,绝对能把T改成P,并且有很多种方法...原创 2019-05-08 13:38:31 · 4908 阅读 · 0 评论