动态规划
动态规划
不维护了
这个作者很懒,什么都没留下…
展开
-
整数划分问题多种解法
题目:如果我们打算将一个给定的正整数N(N≤50)N(N≤50)N(N≤50)拆分为若干个不重复的正整数(a1+a2+⋯ai,i≥1)(a_1+a_2+⋯a_i,i≥1)(a1+a2+⋯ai,i≥1)之和,其中每个零数的取值不大于给定的正整数M(M≤20)M (M≤20)M(M≤20),即1≤ai≤M1≤a_i≤M1≤ai≤M,请问共有多少种不同的拆分方案。法一:DFS搜索。#in...原创 2020-04-20 19:37:36 · 564 阅读 · 0 评论 -
四种背包问题总结
文章目录01背包问题完全背包问题01背包问题问题描述:有N件物品和一个容量为W的背包。第i件物品的费用(即体积,下同)是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。思路:定义dp[i+1][j]dp[i+1][j]dp[i+1][j]从0到i+1个物品中选出总重量不超过j的物品时总价值的最大值。dp[0][j]=0dp[0][j]...原创 2020-04-19 11:24:35 · 483 阅读 · 0 评论 -
字符串LCS,LIS问题多种解法
目录最长公共序列(LCS)最长连续子串最长上升子序列(LIS)最长公共序列(LCS)问题描述:给定两个序列X<x1,x2,…,xmx1,x2,…,xm>和Y<y1,y2,…,yny1,y2,…,yn>,求X和Y的最长公共子序列。例如:输入两个字符串 BDCABA 和 ABCBDAB,字符串 BCBA 和 BDAB 都是是它们的最长公共子序列,则输出它们的长度。...原创 2020-04-16 17:40:07 · 433 阅读 · 0 评论 -
终极混合背包问题
给你一个背包,但是背包只能装载总重为WWW的物品,请问如何选择物品装入背包,使得背包中的物品价值最大。其中物品有以下几类:01物品:这类商品要么选择,要么不选择。有限01物品:这类商品最多选择mim_imi件。无限01物品:这类商品可以选择任意数量。分数物品:这类商品可以选择任意数量,并且可以选择其中任意一部分。在这个问题中你需要考虑这4类商品。输入格式第一行为5个数a,b,c,d,Wa,b,c,d,Wa,b,c,d,W,表示4类商品的数量和背包的质量。接下来a行,每行两个数wi,viw原创 2020-07-29 19:01:30 · 185 阅读 · 0 评论 -
动态规划:分割回文串
给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。返回符合要求的最少分割次数。输入格式一行为字符串,长度小于5000。输出格式一个数表示答案。样例inputaaboutput1inputaaaaoutput0思路:和之前做过的统计单词题目类似(见博客),用dp[i]表示下标0-i的串中需要划分的次数。从位置i开始回推长度从1到j的子串是否是回文串。#include <algorithm>#include <iostream>#inclu原创 2020-06-01 22:28:44 · 272 阅读 · 0 评论 -
钱币组合问题(四元一次方程)
对于一个非负整数 , 四元一次方程:4x+3y+2z+w=n的非负整数解是不唯一的。编程计算不同解的个数。输入格式第 1 行:问题数t第 2 ∽ n+1 行:每一个问题中的 n。输出格式对于每个问题,在一行中输出解的个数。样例input30101000output1237049112思路:可以当作钱币规划问题。#include <iostream>using namespace std;int dp[1111];int main() { i原创 2020-05-31 00:02:43 · 1593 阅读 · 0 评论 -
动态规划:矩阵链乘积
确定n个矩阵连乘积 A1A2A3…An 的计算次序,使得按照这一次序计算矩阵连乘积,需要的"数乘"次数最小。思路:递归定义dp[i,j]dp[i,j]dp[i,j]如下:对于i=j时的平凡问题,矩阵链只包含唯一的矩阵AiA_iAi,因此不需要做任何标量乘法运算。所以,对所有i=1,2,…,n,dp[i,i]=0dp[i,i]=0dp[i,i]=0。若i<j,我们利用步骤1中得到的最优子结构来计算m[i,j]。我们假设A(i)A(i+1)…A(j)的最优括号化方案的分割点在矩阵A(k)和A(原创 2020-05-19 18:35:00 · 473 阅读 · 0 评论 -
单词划分
题目:有一个很长的由小写字母组成字符串。为了便于对这个字符串进行分析,需要将它划分成若干个部分,每个部分称为一个单词。出于减少分析量的目的,我们希望划分出的单词数越少越好。你就是来完成这一划分工作的。输入格式第一行为一整数 T,表示有 T 组测试数据。每组测试数据第一行为一字符串。(长度小于 256)第二行为一整数 N。(1<=N<=100)以下 N 行,每行一个单词,...原创 2020-04-21 15:46:25 · 672 阅读 · 0 评论