dynamic-programming相关内容

生成最佳二叉搜索树(Cormen)

我正在阅读Cormen等人的《算法入门》 (第三版)( 让我们将 e [i,j] 定义为搜索包含从 i 到 j .最终,我们希望计算 e [1,n] ,其中 n 是键的数量(在此示例中为5).最终的递归公式为: 请注意,伪代码可互换地使用基于1和0的索引,而Python仅使用后者.结果,我在实现伪代码时遇到了麻烦.这是我到目前为止的内容: 将numpy导入为npp = [0.15,0 ..
发布时间:2021-04-02 20:41:30 Python

求最小值

我无法理解如何解决这个问题.有人可以帮助我指出我该如何做的方向吗? 给出了 N 个任务,并且有 M 个工作器可用.每个工人可以花费不同的时间来完成每个任务.给出了每个工人完成每项任务所花费的时间.在任何时候,只有一名工人才能完成一项任务.但是条件是工人一旦停止工作,就不能再从事任何任务.我想找出完成所有任务所需的最短时间是多少.这是一个例子- M = 3 N = 4 {T1,T2,T3 ..
发布时间:2021-04-02 20:38:54 C/C++开发

打印到达第n个楼梯的方法

我最近在一次采访中遇到了这个问题 有 n 个楼梯,一个站在底部的人想要到达顶部.该人一次可以爬1步或2步. 打印人员可能到达顶端的所有可能方式. 例如, n = 4 输出: 1 2 3 41 2 41 3 42 3 42 4 但是我无法对此进行正确编码.如何为此编写解决方案? 解决方案 要打印路数,您首先应该了解如何计算路数,并对其进行调整,以便将打印每个“计数" ..
发布时间:2021-04-02 20:36:57 其他开发

动态编程:每天执行任务,安排最大利润

问题: 鲍勃计划工作的时间为n天,每天 i 都有一个任务;每个任务恰好持续一天,必须在给出任务的第 i 天完成,并支付bob x_i 美元.鲍勃一次不能执行超过5个连续任务.也就是说,他必须每5天至少休息1天. Given 数字 x_1 ... x_n ,Bob应该在哪几天执行任务,他应该在哪一天休息,以便尽可能多地赚钱且工作时间不超过5天?您的解决方案应为 O(n) 我的问题: ..
发布时间:2021-04-02 20:34:58 Python

硬币数量有限时的最小硬币找零问题

具体来说,问题是: 给定面额数组 coins [] ,每个硬币的限额数组 limits [] 和数字 amount ,返回最小值要获得 amount 所需的硬币数量,如果不可能,则返回null.此外,在数组 change 中填写解决方案中使用的每种硬币的编号. 这是我的解决方案: 公共静态整数?动态(int数量,int []硬币,int []限制,out in [[找零]){int [] ..
发布时间:2021-04-02 20:34:42 C#/.NET

如何找到字符串中括号和括号的最大有效序列?

所以我有一个需要编写的脚本,最大的问题之一归结为在字符串中找到最大的有效子序列.所以我有类似的东西 “()(({{[[( 作为输入,我需要返回 "[{[(()]}] {}" 作为输出. 我已经尝试过使用像栈一样的结构,就像您只是用括号将其括起来一样,但是还无法找出可行的方法.我希望使用python解决方案,但是任何人都可以提供的任何指导都可以提供帮助,无论使用哪种语言.理想情况下 ..
发布时间:2021-04-02 20:34:38 Python

零钱复杂度有限的硬币找零

如果每种硬币的数量不受限制,则复杂度为 O(n * m),其中 n 是总找零,而 m 是硬币类型的数量.现在,当每种类型的硬币受到限制时,我们必须考虑剩余的硬币.我设法使其复杂度为 O(n * m 2 ),使用另一个大小为 n 的它,因此我可以跟踪其余的每种类型的硬币.有没有什么技巧可以使复杂性更好?编辑:问题是要计算出进行精确给定的更改所需的最少硬币数量,以及我们使用每种硬币类型的次数 解 ..
发布时间:2021-04-02 20:33:29 其他开发

原始计算器-动态方法

对于以下问题,我很难找到正确的解决方案: 您的目标被给定一个正整数n,找到从数字1开始获得数字n所需的操作. 更具体地说,我在下面的评论中提供了该测试用例. #失败的案例#3/16 :(错误的答案)#得到:15预期:14# 输入:#96234##您的输出:#15#1 2 4 5 10 11 22 66 198 594 1782 5346 16038 16039 32078 96234 ..
发布时间:2021-04-02 20:32:51 Python

查找字符串中最长的有效括号序列的长度,以O(n)时间为单位

我的朋友在一次采访中遇到一个问题,他被告知有O(n)解决方案.但是,我们两个都没有想过.这是问题: 有一个仅包含(和)的字符串,查找最长有效括号子字符串的长度,该字符串应格式正确. 例如“)()())" ,最长的有效括号是()(),长度为4. 我通过动态编程解决了这个问题,但不是O(n).有什么想法吗? public int getLongestLen(String s){如 ..

Google访谈:在给定的整数数组中查找所有连续的子序列,这些整数的总和在给定的范围内.我们可以做得比O(n ^ 2)好吗?

给出一个整数数组和一个范围(低,高),找到所有数组中连续的子序列,其总和在范围内. 有没有比O(n ^ 2)更好的解决方案? 我尝试了很多,但是找不到比O(n ^ 2)更好的解决方案.请帮助我找到更好的解决方案,或者确认这是我们能做的最好的事情. 这就是我现在拥有的,我假设范围定义为 [lo,hi] . public static int numOfCombinations( ..
发布时间:2021-04-02 20:29:43 其他开发

找出所有n个大小为k的子集,该子集包含n个大小不一的正整数(重复的未排序正整数)

请注意,这对于 C#.NET 2.0 项目(不允许使用Linq )是必需的. 我知道这里已经提出了非常类似的问题,并且我已经产生了一些有效的代码(请参阅下文),但仍然希望就在给定k和s条件的情况下如何使该算法更快地提出建议. 这是我到目前为止所学到的:动态编程是查找一个(不是全部)子集的最有效方法.如果我错了,请纠正我.有没有一种方法可以反复调用DP代码以产生更新的子集,直到用完重复设置的 ..
发布时间:2021-04-02 20:26:24 C#/.NET

2D矩阵中大小为HxW的最大子数组

给定一个正整数的二维数组,找到具有最大和的大小为HxW的子矩形.矩形的总和是该矩形中所有元素的总和. 输入:具有正元素的2D数组NxN子矩形的HxW大小 输出:HxW大小的子矩阵,其元素之和最大. 我已经使用蛮力方法解决了这个问题,但是,我现在正在寻找一种具有更高复杂度的更好的解决方案(我的蛮力方法的复杂度为O(n 6 )) 解决方案 首先创建矩阵的累加和: O(n 2 ..
发布时间:2021-04-02 20:24:28 其他开发

背包0-1路径重建(需要采取的项目)

我知道如何使用动态编程方法解决背包0-1问题,但是在确定要取哪些物品而不影响O(N * C)(N个物品,C容量)的复杂性方面遇到了麻烦. 有什么想法(我希望采用自下而上的方法)? 解决方案 此处是对O(n)次重构路径的修改 int knapsack(int weight[], int profit[], int no_of_items, int capacity) { ..

具有2个属性的背包算法.如何在3D阵列中实现呢?

当有多个属性时,我在理解背包问题上遇到了问题. 如果有1个属性, 我必须编写一个使用具有2个属性的背包算法的程序.老师告诉我们,必须以3D阵列完成.错误的实现将导致O(2 ^ n)处理时间.我无法想象这样的数组会是什么样子. 假设这是我的输入内容 4 3 4 // number of records below, 1st property of backpack, 2nd pro ..
发布时间:2021-02-15 19:04:49 其他开发

一棵树的最小重量顶点覆盖率

存在一个现有问题处理以顶点的权重为其度的树,但是我对顶点可以具有任意权重的情况感兴趣. 这不是家庭作业,但 是算法设计手册中的问题之一,目前我正在阅读;答案集给出的解决方案为 执行DFS,每步更新一次Score [v] [include],其中v是一个顶点,include是true或false; 如果v是叶子,则设置Score [v] [false] = 0,Score [v] [t ..
发布时间:2020-11-20 05:40:13 其他开发

给定总和和面额的最小硬币数量

给出一组面额和所需的总和,我必须找到使该总和的最小硬币数量,并且还要找到每种面额的硬币数量 请帮助!! 解决方案 用于确定达到该总和所需的最小硬币数量的伪代码为: 程序coinChange(硬币,总计): n:= coins.length dp [n] [total + 1] 对于i从0到n dp [i] [0]:= 0 对于 结束,i从1到(总计+ 1) dp ..
发布时间:2020-10-27 02:37:22 其他开发

动态编程以查找所有回文子串

我试图通过动态编程来解决一个问题。我有一个字符串,我需要找到所有可能的回文子字符串。说,我有一个长度为 n 的字符串。我为查找创建了一个矩阵 n * n 。单元格(i,j)为1或0。如果为1,则表示substring [i..j]是回文,否则为0。最初对角线为1,因为每个字符本身都是回文。 我需要如上所述正确地填充矩阵。 我发现以下内容: 如果substring [i..j]是原 ..
发布时间:2020-10-27 02:37:18 其他开发

找出与使用每个数字相关的成本的最大值

我已经得到了我所拥有的全部钱。现在我知道写下每个数字(1到9)所花费的成本。那么如何从中创建最大数量呢?有没有针对此问题的动态编程方法? 示例: 可用总资金= 2 每个数字的成本(1到9)= 9、11、1、12、5、8、9、10、6 输出:33 解决方案 这是在 ..