算法学习
夏夏爱吃大西瓜
不想当程序员的程序员
展开
-
完全背包
接上一篇的的01背包 完全背包问题实在01背包的基础之上,每一个物品的数量可能不止1的情况 对原先的01背包的代码可以复用 void solve(){ for(int i=0;i<n;i++){ for(int j=0;i<=W;j++){ if(j<w[i]){ dp[i+1][j]=dp[i][j];原创 2017-10-24 19:20:43 · 298 阅读 · 0 评论 -
最长公共子序列
给定两个字符串s1s2...sn和t1t2...tn。求出这两个字符串最长的公共子序列的长度。字符串s1s2...sn的子序列指可以表示为si1si2...sim(i1 1 输入 n=4 m=4 s="abcd" t="becd" 输出 3("bcd") dp[i][j]对应s1s2...si,t1...tj的LCS的长度 由此s1...si+1和t1...tj+1对应的公原创 2017-10-24 19:33:45 · 309 阅读 · 0 评论 -
01背包问题
最近咋学习动态规划,之前也学过,但是每次学完之后就忘记了,所以希望能够写下来方便之后理解 01背包问题 有n个重量和价值分别为wi,vi的物品。从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值 1 1 1 输入 n=4 (w,v)={(2,3),(1,2),(3,4),(2,2)} W=5 输出 7(选择第0,1,3号物品) dp[i+1][j]=d原创 2017-10-24 19:03:28 · 304 阅读 · 0 评论