dynamic-programming

    2热度

    2回答

    给定问题: 0/1-背包问题,每个项目有n个权重w_i和值v_i。查找其权重之和高达体重W. 但有两个constraits的最大总价值: 总重量所有项目在背包的需要是准确W¯¯。 总计数量项目必须是甚至。 我想找到一个关注两个约束的算法。我已经发现我一次可以关注其中的一个。 这是我实现它注重constrait 1(准确重量W): public class KnapSackExactWeight {

    1热度

    2回答

    在书中算法导论中,幼稚的方法来解决杆切削问题可以通过以下的递推来描述: 设q是,可以从获得的最高价格一根长度为n的棒。 让数组价格[1..n]存储给定的价格。价格[i]是长度为i的棒的给定价格。 rodCut(int n) { initialize q as q=INT_MIN for i=1 to n q=max(q,price[i]+rodCut(n-i))

    -4热度

    4回答

    给定具有正值和负值的数组,返回最大连续切片大小,如果两个元素具有不同的符号,则返回两个元素交替,零被视为负值和正值。 例 鉴于a = [1, -5, 23, 0, 1, 1, 0, 2, -5, 3, -1, 1, 2, 3]返回7(序列[1, 0, 2, -5, 3, -1, 1]具有最大交片大小) 预期运行时是O(n)。 我试图解决像最大总和sequnce问题: def sol(a): n

    -1热度

    1回答

    对于weight,value,max_weight和total_items的给定值,它工作正常,但是当我改变权重,值和其他变量时,它给出了分段错误。 我检查,当我改变变量,然后在背包功能items->value和items->weight变成NULL。 和items->max_weight和items->total_items变成0。 我无法弄清楚我的代码出了什么问题,请帮忙,提前致谢。 代码 #

    -1热度

    1回答

    我一直在试图制定一个简单的背包问题,但我看不出为什么它不起作用。 i <- c(1,2,3,4) v <- c(100,80,10,120) w <- c(10,5,10,4) k <- 15 F <- function(i,k){ if (i==0 | k==0){ output <- 0 } else if (k<w[i]){ output <

    0热度

    2回答

    你好,我想了解这个解决方案组合总和。 function combinationSum(candidates, target) { var result = []; if ((candidates == null) || (candidates.length == 0)) { return result; } var cur = [];

    0热度

    1回答

    我已阅读LCS问题的解决方案。但是现在存在最长相似子序列问题:序列C是两个序列A,B的相似子序列当且仅当C是A的子序列并且我们可以在C中替换至多K个元素使得C是B的子序列例如,如果A =“ABCDE”,B =“BCAFE”,K = 1,那么最长的相似子序列是“BCDE”(“BCDE是”ABCDE“的子序列,我们可以用' D''A'或'F'使它成为“BCAFE”的子序列) 我的问题是我只想出了一个递

    0热度

    2回答

    所以这是一个相当有名的实施DP的例子,但由于某些原因,我不能完全理解算法,并且我一直坚持它很长一段时间(准备计算奥林匹克)。问题如下 想象一下,你有N个葡萄酒在 架子上相邻放置。为了简单起见,我们将葡萄酒从左至右编号为 ,它们分别站在货架上,整数分别为1至N, 。第i种葡萄酒的价格是pi(不同 葡萄酒的价格可能不同)。 因为葡萄酒每年都变得更好,假设今天是一年 1,在年份y的第i个葡萄酒的价格将Y

    -2热度

    1回答

    我想用动态规划解决以下问题。 给出一个原始计算器,它可以用当前数字x执行以下三个操作:乘以x乘以2,乘以x乘以3或给x加1。你的目标是给出一个正整数n,找到从数字1开始获得数字n所需的最小操作次数。 输出应该包含两部分 - 最小操作的数量和从1到n的序列。 我从这篇文章中发现了以下解决方案:Dynamic Programming - Primitive Calculator Python。 我有问

    1热度

    1回答

    我想知道如何确定下面的代码的时间复杂度,使用自上而下的动态编程方法与memoization(请注意,我可以是任何整数值) : solve(i, k, d) { if (k >= d) { A[i][k] = 0; return 0; } if (i == 0) { A[i][k] = 0; return 0;