dynamic-programming相关内容

使用动态规划解决多项选择背包 (MCKP)?

示例数据 对于这个问题,让我们假设以下项目: 物品:苹果、香蕉、胡萝卜、牛排、洋葱 值:2、2、4、5、3 权重:3、1、3、4、2 最大重量:7 目标: MCKP 是一种背包问题,附加约束是“[T]他的项目被细分为k个类别... 并且必须从每个类别中提取一个项目" 我已经编写了使用递归调用和记忆化的动态编程来解决 0/1 KS 问题的代码.我的问题是是否可以将 ..
发布时间:2021-10-26 18:46:44 PHP

Python 求矩阵动态规划中最大的平方

我有一个矩阵如下(Python): matrix = """...o..o.o……呜…………哦……哦..o.ooo..哦……哦…….oo……..o....o..oo………………“" 其中“o"是一个障碍,我需要找到这个矩阵中最大的正方形.并替换相应的'.'像下面的'x' """xxxo..o.oxxxoo....xxxo....o..o.ooo..哦……哦…….ooxxxx....oxxxx ..
发布时间:2021-10-26 18:42:37 Python

如何找到最长的回文子序列(不是它的长度)

我想找出字符串中最长的回文子序列.我到处都找到了找出子序列长度的算法,并声明算法也可以扩展以返回子序列,但我没有找到方法.谁能解释一下我怎样才能得到序列? 解决方案 既然你提到了链接 Longest Palindromic在 geeksforgeeks 中的子序列,我修改了解决方案以输出结果.我想我们需要一个辅助的二维数组来存储回文子序列的来源,这样我们最终可以通过辅助数组得到结果.您可以 ..
发布时间:2021-10-26 18:41:39 其他开发

Leetcode 盗贼

我正在尝试关于 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 ..
发布时间:2021-10-26 18:41:13 其他开发

你如何找到学生在课堂上的最佳分配?

A 级 23 名、B 级 24 名和 C 级 30 名学生需要分配到三个班级.这些类的大小必须几乎完全相同.不同的级别可以混合成一个类,但最好能避免.无论如何,一个班级的一个级别应该有0个学生,或者超过6个. 你能帮我解决这个组合优化问题吗?下面是一个示例输入和输出.如果你能告诉我如何解决一般问题,就加分! 输入: pupils = { "A" : 23, "B" : 24, "C" ..

计算给定范围内具有唯一数字的所有数字

这是一道面试题.计算 [1, N] 范围内具有唯一数字(十进制)的所有数字. 显而易见的解决方案是测试范围内的每个数字,如果其数字是唯一的.我们还可以生成具有唯一数字(作为排列)的所有数字并测试它们是否在范围内. 现在想知道这个问题有没有DP(动态规划)解决方案. 解决方案 我在想: 唯一数字位数 1-5324= 1-9 唯一数字的数量+ 10-99 的唯一数字数+ 唯一位数 ..
发布时间:2021-10-26 18:40:17 其他开发

要执行的最大任务数

我遇到了一个问题.我知道 dp 可以在这里应用,但没有得到它. 考虑从 0 开始到 10^9 结束的正数行的一部分.你从 0 开始,可以执行 N 个任务. ith 任务在 l[i] 并且需要 t[i] 时间来执行.要执行 ith 任务,您必须到达点 l[i] 并在该位置花费时间 t[i]. 在路径上移动一个单位需要一秒,即从 1 到 3 需要 (3 - 1) = 2 秒. 您有 ..
发布时间:2021-10-26 18:38:13 Java开发

动态规划:盒子堆叠变化

我们有 n 个尺寸为 x、y、z(宽度、高度、深度)的盒子.我们想在另一个中插入最大数量的盒子. 如果内盒 (i) 的大小严格小于外盒 (j) 的大小,您可以将一个盒子放入另一个盒子中:x[i] 盒子不能旋转,可以按任何顺序考虑. 如何通过动态规划实现目标? 该问题类似于最长递增子序列问题? 按升序/降序对框进行排序是否有意义? 解决方案 对框进行拓扑排序,将它们排列成图如下: ..
发布时间:2021-10-26 18:37:53 其他开发

如何解决背包问题的这种变体?

我正在尝试解决此问题:邮局中有 n个客户排队等候发送包裹. a [0],a [1],...,a [n-1] 是n位客户从第一个人到第n个人的运输成本的列表.邮政工作人员需要一分钟的时间来完成客户发送包裹所需的信息.但是,所有客户都忙于等待一段时间. t [0],t [1],...,t [n-1] 是n位客户可以在邮局消费的分钟数列表.帮助邮政工作人员找到一种服务客户的方法,以便使邮局获得最大的收益 ..
发布时间:2021-05-28 19:32:59 其他开发

从N个项目中选择M个项目,以便完成这些M个项目所需的时间最少

我正在尝试解决以下问题:您将获得N个物品.每个项目包含三个任务A,B和C.完成任务A所需的时间为TA,任务B为TB,任务C为TC.现在,我们必须选择M项,以便完成这些M项的任务所需的时间最少.这是规则: 同时选中所有M个项目,即同时操作所有M个项目 除非所有M个项目的任务A完成,否则任何选定项目的任务B都无法启动 除非所有M个项目的任务B完成,否则任何选定项目的任务C都无法启动 例 ..
发布时间:2021-05-18 20:10:42 Java开发

为什么此解决方案在JavaScript中有效,但在C ++中却花费太长时间?(动态编程)

这是我的 canSum 函数需要执行的操作: 给出目标总和 x ,并返回 true ,前提是可以通过添加给定数组中的元素来获得该总和,前提是可以使用数组元素任何次数. 示例: canSum(7,{2,3})->真的canSum(7,{2,4})->错误的 下面是我用C ++重写的JavaScript代码.出于某种原因,即使我使用了记忆功能,C ++版本对于大量输入也花费了太长时 ..
发布时间:2021-05-03 19:06:30 C/C++开发

动态编程-C ++中的canSum记忆

目标是如果可以通过将给定向量中的元素相加而得出 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 ..
发布时间:2021-05-03 19:06:27 C/C++开发

使用动态规划的矩阵的最小路径

我现在正在为我的补习班分配作业,目前正在掌握动态编程的窍门.我们当前的任务是给我们一个大小为 m x n 的矩阵,其中m或n至少保证为2.我们可以从任何基本方向从上述位置移动,目标是从索引(0,0)开始,然后必须索引(n-1,m-1),或者最好是底部矩阵的右角,行程尽可能少.如果这样的路径不可行,我们必须返回-1.这是一个示例: 1 2 7 5 6 3 从左上角到右下角的最小跳跃次 ..
发布时间:2021-05-03 19:06:19 Java开发

PyTorch:作为张量操作的动态编程

是否可以通过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 中的先前值和在途中(以动态编程方式)计算出的值. 是否可以通过张量运算获得这种顺序计算? 解决 ..
发布时间:2021-05-03 19:06:16 Python

加油站动态编程

您和您的朋友正开车去蒂华纳(Tijuana)度假.您为旅行节省了金钱,因此您希望尽量减少旅途中的汽油成本.为了最大程度地减少您的汽油费用,您和您的朋友汇编了以下信息.首先,您的汽车可以使用汽油箱可靠地行驶数英里(但不能再继续行驶).您的一位朋友从网络上开采了加油站数据,并绘制了沿途的每个加油站以及该加油站的汽油价格.具体来说,他们创建了从最接近到最远的n + 1个加油站价格列表,以及两个相邻的加油 ..
发布时间:2021-05-03 19:06:12 Java开发

如何在打字稿中动态调用实例方法?

我有一个对象,并且想在其上动态调用一个方法. 进行类型检查会很不错,但这也许是不可能的.但是我什至无法完全编译它: const键:字符串='someMethod'const func = this [key]func(msgIn) 给我这个错误... 元素隐式具有"any"类型因为不能使用'any'类型的表达式索引类型"TixBot". 我尝试了其他一些类型选择,但没有成功. ..
发布时间:2021-05-03 19:06:06 其他开发

Java中的整数分区

我正在尝试实现一个程序,该程序返回整数n的现有分区数作为分配的一部分.我在下面编写了代码,但返回的数字错误(分区n返回分区n-1的结果).我不明白为什么会这样.我已经尝试了很多东西,但仍然不知道如何解决它,任何人都可以帮助我吗? [为了避免我的同事my窃而编辑的代码:p] m表示分区中允许的最大数字,因此partition(4,4)将为5 = 4、3 + 1、2 + 2、2 + 1 + 1 ..
发布时间:2021-05-03 19:06:02 Java开发