dynamic-programming相关内容
整数的分区: 4 = 4 p(4,1) = 1= 1+3, 2+2 p(4,2) = 2= 1+1+2 p(4,3) = 1= 1+1+1+1 p(4,4) = 1 /max(p(4, k)) = 2, 在 k = 2 5 = 5 p(5,1) = 1= 1+4, 2+3 p(5,2) = 2= 1+1+3, 1+2+2 p(5,3) = 2= 1+1+1+2 p(5,4) = 1= 1+1
..
示例数据 对于这个问题,让我们假设以下项目: 物品:苹果、香蕉、胡萝卜、牛排、洋葱 值:2、2、4、5、3 权重:3、1、3、4、2 最大重量:7 目标: MCKP 是一种背包问题,附加约束是“[T]他的项目被细分为k个类别... 并且必须从每个类别中提取一个项目" 我已经编写了使用递归调用和记忆化的动态编程来解决 0/1 KS 问题的代码.我的问题是是否可以将
..
我有一个矩阵如下(Python): matrix = """...o..o.o……呜…………哦……哦..o.ooo..哦……哦…….oo……..o....o..oo………………“" 其中“o"是一个障碍,我需要找到这个矩阵中最大的正方形.并替换相应的'.'像下面的'x' """xxxo..o.oxxxoo....xxxo....o..o.ooo..哦……哦…….ooxxxx....oxxxx
..
我想找出字符串中最长的回文子序列.我到处都找到了找出子序列长度的算法,并声明算法也可以扩展以返回子序列,但我没有找到方法.谁能解释一下我怎样才能得到序列? 解决方案 既然你提到了链接 Longest Palindromic在 geeksforgeeks 中的子序列,我修改了解决方案以输出结果.我想我们需要一个辅助的二维数组来存储回文子序列的来源,这样我们最终可以通过辅助数组得到结果.您可以
..
我正在尝试关于 leet 代码的 House Robber 问题(dp 问题).来自 GYX 用户之一的这个解决方案看起来简单而优雅. int rob(vector& num) {int n = num.size();如果 (n==0) 返回 0;向量结果(n+1,0);结果[1] = num[0];for (int i=2;i
..
A 级 23 名、B 级 24 名和 C 级 30 名学生需要分配到三个班级.这些类的大小必须几乎完全相同.不同的级别可以混合成一个类,但最好能避免.无论如何,一个班级的一个级别应该有0个学生,或者超过6个. 你能帮我解决这个组合优化问题吗?下面是一个示例输入和输出.如果你能告诉我如何解决一般问题,就加分! 输入: pupils = { "A" : 23, "B" : 24, "C"
..
这是一道面试题.计算 [1, N] 范围内具有唯一数字(十进制)的所有数字. 显而易见的解决方案是测试范围内的每个数字,如果其数字是唯一的.我们还可以生成具有唯一数字(作为排列)的所有数字并测试它们是否在范围内. 现在想知道这个问题有没有DP(动态规划)解决方案. 解决方案 我在想: 唯一数字位数 1-5324= 1-9 唯一数字的数量+ 10-99 的唯一数字数+ 唯一位数
..
我遇到了一个问题.我知道 dp 可以在这里应用,但没有得到它. 考虑从 0 开始到 10^9 结束的正数行的一部分.你从 0 开始,可以执行 N 个任务. ith 任务在 l[i] 并且需要 t[i] 时间来执行.要执行 ith 任务,您必须到达点 l[i] 并在该位置花费时间 t[i]. 在路径上移动一个单位需要一秒,即从 1 到 3 需要 (3 - 1) = 2 秒. 您有
..
我们有 n 个尺寸为 x、y、z(宽度、高度、深度)的盒子.我们想在另一个中插入最大数量的盒子. 如果内盒 (i) 的大小严格小于外盒 (j) 的大小,您可以将一个盒子放入另一个盒子中:x[i] 盒子不能旋转,可以按任何顺序考虑. 如何通过动态规划实现目标? 该问题类似于最长递增子序列问题? 按升序/降序对框进行排序是否有意义? 解决方案 对框进行拓扑排序,将它们排列成图如下:
..
我正在尝试解决此问题:邮局中有 n个客户排队等候发送包裹. a [0],a [1],...,a [n-1] 是n位客户从第一个人到第n个人的运输成本的列表.邮政工作人员需要一分钟的时间来完成客户发送包裹所需的信息.但是,所有客户都忙于等待一段时间. t [0],t [1],...,t [n-1] 是n位客户可以在邮局消费的分钟数列表.帮助邮政工作人员找到一种服务客户的方法,以便使邮局获得最大的收益
..
我正在尝试解决以下问题:您将获得N个物品.每个项目包含三个任务A,B和C.完成任务A所需的时间为TA,任务B为TB,任务C为TC.现在,我们必须选择M项,以便完成这些M项的任务所需的时间最少.这是规则: 同时选中所有M个项目,即同时操作所有M个项目 除非所有M个项目的任务A完成,否则任何选定项目的任务B都无法启动 除非所有M个项目的任务B完成,否则任何选定项目的任务C都无法启动 例
..
这是我的 canSum 函数需要执行的操作: 给出目标总和 x ,并返回 true ,前提是可以通过添加给定数组中的元素来获得该总和,前提是可以使用数组元素任何次数. 示例: canSum(7,{2,3})->真的canSum(7,{2,4})->错误的 下面是我用C ++重写的JavaScript代码.出于某种原因,即使我使用了记忆功能,C ++版本对于大量输入也花费了太长时
..
目标是如果可以通过将给定向量中的元素相加而得出 sum ,则返回true.向量元素可以按任何顺序使用和重用. 示例: sum = 7,列表= [4,5] 返回false,因为您不能使用这些列表元素将其设为7 sum = 9或5或20或8,列表= [4,5] 返回true,因为9 = 4 + 5,5已在列表中,20 = 5 + 5 + 5 + 5,8 = 4 + 4
..
问题 给出 n ,找到最小的正数 x ,这样 f(x)= n . f(x)是 x 的数字的阶乘的数字和. 例如, f(15)= digit_sum(1!)+ digit_sum(5!)= digit_sum(1)+ digit_sum(120)=(1)+(1 + 2 + 0)= 4 先进行呼吸搜索即可找到答案.有更快的方法吗? 首先进行呼吸搜索 def bfs(
..
我现在正在为我的补习班分配作业,目前正在掌握动态编程的窍门.我们当前的任务是给我们一个大小为 m x n 的矩阵,其中m或n至少保证为2.我们可以从任何基本方向从上述位置移动,目标是从索引(0,0)开始,然后必须索引(n-1,m-1),或者最好是底部矩阵的右角,行程尽可能少.如果这样的路径不可行,我们必须返回-1.这是一个示例: 1 2 7 5 6 3 从左上角到右下角的最小跳跃次
..
是否可以通过Tensor操作获得以下循环? a = torch.Tensor([1,0,0,0])b =火炬.张量([1,2,3,4])对于范围(1,a.shape [0])中的i:a [i] = b [i] + a [i-1]print(a)#[1、3、6、10] 该操作取决于 a 中的先前值和在途中(以动态编程方式)计算出的值. 是否可以通过张量运算获得这种顺序计算? 解决
..
您和您的朋友正开车去蒂华纳(Tijuana)度假.您为旅行节省了金钱,因此您希望尽量减少旅途中的汽油成本.为了最大程度地减少您的汽油费用,您和您的朋友汇编了以下信息.首先,您的汽车可以使用汽油箱可靠地行驶数英里(但不能再继续行驶).您的一位朋友从网络上开采了加油站数据,并绘制了沿途的每个加油站以及该加油站的汽油价格.具体来说,他们创建了从最接近到最远的n + 1个加油站价格列表,以及两个相邻的加油
..
我编写了以下代码来实现硬币找零问题:给您n种类型的硬币面额,值v(1)
..
我有一个对象,并且想在其上动态调用一个方法. 进行类型检查会很不错,但这也许是不可能的.但是我什至无法完全编译它: const键:字符串='someMethod'const func = this [key]func(msgIn) 给我这个错误... 元素隐式具有"any"类型因为不能使用'any'类型的表达式索引类型"TixBot". 我尝试了其他一些类型选择,但没有成功.
..
我正在尝试实现一个程序,该程序返回整数n的现有分区数作为分配的一部分.我在下面编写了代码,但返回的数字错误(分区n返回分区n-1的结果).我不明白为什么会这样.我已经尝试了很多东西,但仍然不知道如何解决它,任何人都可以帮助我吗? [为了避免我的同事my窃而编辑的代码:p] m表示分区中允许的最大数字,因此partition(4,4)将为5 = 4、3 + 1、2 + 2、2 + 1 + 1
..