动态规划
记录和总结一些动态规划问题
一万次悲伤_
。。。。。
展开
-
求解小易喜欢的数列问题(DP)
题意:思路: 该题的状态转移方程还是挺好思考的,定义f[i][j]为解决前i-1位,第i为j的数列的方案种数。那么可以得到状态转移方程,要爆int,所以注意要开longlongf[i][j]] += f[i - 1][k] (k原创 2022-07-07 10:30:14 · 315 阅读 · 0 评论 -
求解堆砖块问题(DP)
问题描述: 思路1:先讲述一个思路比较简单易懂的,但是复杂度略高的。定义状态f[i][j][k]表示考虑i个物品,此时放在左边或者放在右边或者不放,此时左边框的高度为j,右边高度为k的状态是否存在。这样就可以描述一个完整的状态,答案就是f[n][j][j]中为true,且j最大的。此时进行状态的转移1不放:f[i][j][k] = f[i - 1][j][k]2放在左边:f[i][j][k] |= f[i - 1][j - h[i][k]3放在右边:f[i][j][k] |= f[i - 1][j][k -原创 2022-07-07 09:47:53 · 504 阅读 · 0 评论 -
求解分饼干问题(DP)
题意: 思路:根据数据范围可知,长度最多有18位,每位有9种可能。所以用dfs时间复杂度是9^18次方。这样肯定是会tle的,所以这里思考dp如何解决,那么dp就是如何描述一类状态,然后将答案归到某一类中,定义f[i][j]为前i位,%k为j的方案数量。那么初始状态就是f[0][0] = 1。对于1XX,n = 3,那么f[1][1] = 1是显然的,f[1][k]都为0。那么如何从f[1][1]推到f[2][k]的状态。我们知道对于abc来说,abc%n = (ab * 10 + c) % n = (ab原创 2022-07-07 09:15:33 · 349 阅读 · 0 评论 -
求解数字和为sum的方法数问题(背包问题)
题目描述:问题描述:给定一个有n个正整数的数组a和一个整数sum,求选择数组a中部分数字和为sum的方案数。若两种选取方案有一个数字的下标不一样,则认为是不同的方案。输人描述:输人为两行,第1行为两个正整数n(1≤n≤1000)、sum(1≤sum≤1000),第2行为n个正整数a[i](32位整数),以空格隔开。输出描述:输出所求的方案数。输入样例:5 155 5 10 2 3输出样例:4思路:经典的背包问题求方案种数,定义f[i][j]为从前i个数中选,和为j的方案种数。则状态转移方程为不选第i原创 2022-07-06 17:06:37 · 177 阅读 · 0 评论 -
求解袋鼠过河问题(dp)
问题描述:一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上有一个弹簧,袋鼠跳到弹簧上就可以跳的更远。每个弹簧力量不同,用一个数字代表它的力量,如果弹簧的力量为5,就表示袋鼠下一跳最多 能够跳5米,如果为0,就表示会陷进去无法继续跳跃。河流一共n米宽,袋鼠初始在第一个弹簧上面,若跳到最后一个弹簧就算过河了,给定每个弹簧的力量,求袋鼠最少需要多少跳能够到达对岸。如果无法到达,输出一1。输人描述:输入分两行,第1行是数组长度n(1≤n≤10000),第2行是每一-项的原创 2022-07-06 16:50:57 · 1046 阅读 · 0 评论 -
达拉姆高阶领主(经典DP)
达拉姆高阶领主(经典DP)原创 2022-07-05 01:00:09 · 169 阅读 · 0 评论 -
求解添加最少括号数问题(区间dp)
求解添加最少括号数问题(区间dp)原创 2022-07-04 16:45:02 · 1136 阅读 · 0 评论 -
新水果取名(DP类似于最长公共子序列)
新水果取名(DP)原创 2022-07-04 16:02:34 · 423 阅读 · 0 评论