动态规划
细水长流者
讨厌我所讨厌的,喜欢我所喜欢的东西~
展开
-
力扣309买卖股票时机含冷冻期---python
题目描述:给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: prices = [1,2,3,0,2]输出: 3解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]示例 2:输入: p原创 2022-02-07 11:17:45 · 822 阅读 · 0 评论 -
力扣 518. 零钱兑换 II---Python
给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。假设每一种面额的硬币有无限个。题目数据保证结果符合 32 位带符号整数。示例 1:输入:amount = 5, coins = [1, 2, 5]输出:4解释:有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例 2:输入:amount = 3, coins =原创 2021-10-15 16:46:20 · 424 阅读 · 0 评论 -
力扣 746. 使用最小花费爬楼梯---Python
746. 使用最小花费爬楼梯题目描述:数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。示例 1:输入:cost = [10, 15, 20]输出:15解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15原创 2021-08-13 16:42:00 · 279 阅读 · 0 评论 -
70. 爬楼梯---Python
70. 爬楼梯题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1: 1 阶 + 1 阶2:2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 :1 阶 + 1 阶 + 1 阶2: 1 阶 + 2 阶3: 2 阶 + 1 阶来源:力扣(LeetCode)链接:https://原创 2021-08-04 16:15:40 · 258 阅读 · 0 评论 -
剑指 Offer 62. 圆圈中最后剩下的数字---Python
剑指 Offer 62. 圆圈中最后剩下的数字题目描述:0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2限制:1 <= n原创 2021-08-03 15:46:07 · 168 阅读 · 0 评论 -
完全背包---dp
完全背包—dp题目描述:有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000原创 2020-07-04 14:27:09 · 266 阅读 · 0 评论 -
多重背包问题---dp
多重背包问题—dp题目描述:有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤1000<vi,wi,原创 2020-07-03 16:33:46 · 366 阅读 · 0 评论 -
01背包问题---dp
01背包问题—dp题目描述:有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?样例输入:【4代表物品个数,8代表体积大小,下面4行代表第i个物品的体积和价值】4 82 33 44 55 6样例输出:10AC代码:#include <stdlib.h>#include <stdio.h>#include <algorithm>#include <iostream>#include原创 2020-07-03 15:54:39 · 246 阅读 · 0 评论 -
蒜头君闯关---dp
蒜头君闯关—dp题目描述:AC代码://蒜头君闯关 #include <stdlib.h>#include <stdio.h>#include <algorithm>#include <iostream>#include <string.h>#include <math.h>using namespace std;long long dp[1000+5];long long a[1000+5];int mai原创 2020-07-02 21:03:20 · 243 阅读 · 0 评论 -
求最长上升子序列的长度---dp
求最长上升子序列的长度—dp题目描述:求最长上升子序列的长度:【注意是连续的子序列】比如:34125609最长的子序列为:34569或者12569(答案不唯一),所以结果是5第一种解法:dfs【时间可能长一些】//最长上升子序列 #include <stdlib.h>#include <stdio.h>#include <algorithm>#include <iostream>#include <string.h>#inc原创 2020-07-02 19:57:53 · 1116 阅读 · 0 评论 -
最长公共子序列---dp
题目描述:最长公共子序列(Longest Common Subsequence,简称 LCS)是一道非常经典的面试题目,因为它的解法是典型的二维动态规划,大部分比较困难的字符串问题都和这个问题一个套路,比如说编辑距离。而且,这个算法稍加改造就可以用于解决其他问题,所以说 LCS 算法是值得掌握的。题目就是让我们求两个字符串的 LCS 长度:输入: str1 = “abcde”, str2 = “ace”输出: 3解释: 最长公共子序列是 “ace”,它的长度是 3dp数组表:AC代码:原创 2020-07-02 19:48:37 · 370 阅读 · 0 评论 -
计蒜客 蓝桥杯模拟 快速过河---dp
计蒜客 蓝桥杯模拟 快速过河—dp题目描述:在一个夜黑风高的晚上,有 nn 个小朋友在桥的这边,现在他们需要过桥,但是由于桥很窄,每次只允许不超过两人通过,他们只有一个手电筒,所以每次过桥后,需要有人把手电筒带回来,第 ii 号小朋友过桥的时间为 a_iai,两个人过桥的总时间为二者中时间长者。问所有小朋友过桥的总时间最短是多少。输入格式第一行输入一个整数 nn,表示有 nn 个小朋友。第二行有 nn 个整数 a_iai ,a_iai 表示第 ii 个小朋友过河需要的时间。输出格式输出原创 2020-07-01 20:12:29 · 257 阅读 · 0 评论 -
墙壁涂色---dp
题目描述:蒜头君觉得白色的墙面好单调,他决定给房间的墙面涂上颜色。他买了 3 种颜料分别是红、黄、蓝,然后把房间的墙壁竖直地划分成 n 个部分,蒜头希望每个相邻的部分颜色不能相同。他想知道一共有多少种给房间上色的方案。例如,当 n=5 时,下面就是一种合法方案。|蓝|红|黄|红|黄|由于墙壁是一个环形,所以下面这个方案就是不合法的。|蓝|红|黄|红|黄|蓝|输入格式一个整数 n,表示房间被划分成多少部分。(1≤n≤50)输出格式一个整数,表示给墙壁涂色的合法方案数。样例输入4样例输原创 2020-06-30 21:17:28 · 370 阅读 · 0 评论 -
计蒜客:蒜头君的新游戏---DP
题目描述:工作空闲之余,蒜头君经常带着同事们做游戏,最近蒜头君发明了一个好玩的新游戏:n 位同事围成一个圈,同事 A 手里拿着一个兔妮妮的娃娃。蒜头君喊游戏开始,每位手里拿着娃娃的同事可以选择将娃娃传给左边或者右边的同学,当蒜头君喊游戏结束时,停止传娃娃。此时手里拿着娃娃的同事即是败者。玩了几轮之后,蒜头君想到一个问题:有多少种不同的方法,使得从同事 A 开始传娃娃,传了 m 次之后又回到了同事 A 手里。两种方法,如果接娃娃的同事不同,或者接娃娃的顺序不同均视为不同的方法。例如 1−>2−&g原创 2020-06-30 20:01:02 · 375 阅读 · 0 评论 -
计蒜客:捡水果---DP
计蒜客:捡水果—DP题目描述:蒜头在玩一款游戏,他在一个山顶,现在他要下山,山上有许多水果,蒜头每下一个高度就可以捡起一个水果,并且获得水果的能量。山的形状如图所示31 26 2 33 5 4 11234这是一个高度为 4 的山,数字代表水果的能量。每次下一个高度,蒜头需要选择是往左下走,还是往右下走。例如:对于上图的情况,蒜头能获得的最大能量为,3+1+6+5=15。现在,蒜头希望你能帮他计算出下山能获得的最大能量。输入格式第一行输入一个 n,代表山的高度。(1< n<=1原创 2020-06-30 18:59:42 · 276 阅读 · 0 评论 -
蓝桥杯试题 算法训练 乘积最大---(dfs+DP)
算法训练 乘积最大时间限制:1.0s 内存限制:256.0MB问题描述今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例原创 2020-06-11 17:13:01 · 723 阅读 · 0 评论 -
蓝桥杯试题 算法训练 装箱问题
蓝桥杯试题 算法训练 装箱问题题目描述:资源限制时间限制:1.0s 内存限制:256.0MB问题描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。 要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入格式 第一行为一个整数,表示箱子容量; 第二行为一个整数,表示有n个物品; 接下...原创 2020-04-13 15:40:39 · 779 阅读 · 0 评论 -
蓝桥杯试题 算法提高 01背包
蓝桥杯试题 算法提高 01背包题目描述:资源限制时间限制:1.0s 内存限制:256.0MB问题描述 给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个.输入格式 输入的第一行包含两个整数n, m,分别表示物品的个数和背包能装重量。 以后N行每行两个数Wi和Vi,表示物品的重量和价值输出格式 输出1行...原创 2020-04-06 10:43:46 · 478 阅读 · 2 评论 -
试题 算法训练 和为T---蓝桥杯
试题 算法训练 和为T题目描述:资源限制时间限制:1.0s 内存限制:256.0MB问题描述 从一个大小为n的整数集中选取一些元素,使得它们的和等于给定的值T。每个元素限选一次,不能一个都不选。输入格式 第一行一个正整数n,表示整数集内元素的个数。 第二行n个整数,用空格隔开。 第三行一个整数T,表示要达到的和。输出格式 输出有若干行,每行输出一组解,即所选取的...原创 2020-03-21 10:13:27 · 2230 阅读 · 0 评论