📝 动态编程
1324篇技术文档📅  最后修改于: 2021-09-17 06:57:00        🧑  作者: Mango
给定一个由(N – 1) 个整数组成的数组arr[],每个值arr[i](基于 1 的索引)是度数为i的节点的分数。任务是确定可以构造的任何N 个节点的树的最大分数。例子:Input:arr[] = {1, 3, 0}Output:8Explanation:One possible way to construct tree is:1/ \2 3\4Node 1 have degree...
📅  最后修改于: 2021-09-17 06:57:07        🧑  作者: Mango
给定一个由整数组成的数组“arr”,任务是找到非空子集,使其总和最接近零,即零和总和之间的绝对差最小。例子:Input :arr[] = {2, 2, 2, -4}Output :0arr[0] + arr[1] + arr[3] = 0That’s why answer is zero.Input :arr[] = {1, 1, 1, 1}Output :1编程需要懂一点英语一种简单的方法是递归...
📅  最后修改于: 2021-09-17 06:57:13        🧑  作者: Mango
给定三个正整数L、R和Y,任务是计算范围[L, R]中数字总和等于Y的数字例子:Input:L = 500, R = 1000, Y = 6Output:3Explanation:Numbers in the range [500, 600] whose sum of digits is Y(= 6) are:501 = 5 + 0 + 1 = 6510 = 5 + 1 + 0 = 6600 = ...
📅  最后修改于: 2021-09-17 06:57:20        🧑  作者: Mango
给定一个N x N二进制矩阵。问题是找到计数为 1 的最大面积子矩阵比计数为 0 的多。例子:天真的方法:检查给定二维矩阵中的每个可能的矩形。该解决方案需要 4 个嵌套循环,并且该解决方案的时间复杂度为 O(n^4)。有效的方法:一种有效的方法是使用最长的子数组,其 1 的计数比 0 的计数多一个,这将时间复杂度降低到 O(n^3)。这个想法是一一固定左右列,并找到最大长度的连续行,其中 1 的计...
📅  最后修改于: 2021-09-17 06:57:26        🧑  作者: Mango
给定一个由 N 个数字组成的数组,我们需要最大化所选数字的总和。在每一步,您需要选择一个数字 Ai,删除它的一次出现,并删除数组中所有出现的Ai-1和Ai+1(如果存在)。重复这些步骤直到数组变空。问题是最大化所选数字的总和。注意:如果 Ai+1 和 Ai-1 元素存在于数组中而不是 Ai+1和 Ai-1 ,我们必须删除所有出现的 Ai+1 和 Ai-1 元素。例子:我们的目标是最大化所选数字的总...
📅  最后修改于: 2021-09-17 06:57:32        🧑  作者: Mango
给定 n 个项目的权重和值以及一个值 k。我们需要以这样的方式选择这些项目的一个子集,使得所选项目的权重总和与值总和的比率为 K,并且权重总和在所有可能的子集选择中最大。我们可以使用动态规划来解决这个问题。我们可以创建一个 2 状态 dp,其中 dp(i, j) 将在给定条件下存储最大可能的权重总和,当总项目数为 N 且所需比率为 K 时。现在在 dp 的两种状态下,我们将存储最后选择的项目以及权...
📅  最后修改于: 2021-09-17 06:57:39        🧑  作者: Mango
给定两个长度为M和N 的数组arr1[]和arr2[]由表示两个数字的数字[0, 9]和一个整数 K(K ≤ M + N) 组成,任务是找到可能的最大 K 位数字通过从给定数组中选择子序列,使得数字的相对顺序与给定数组中的相同。例子:Input:arr1[] = {3, 4, 6, 5}, arr2[] = {9, 1, 2, 5, 8, 3}, K = 5Output:98653Explanat...
📅  最后修改于: 2021-09-17 06:57:45        🧑  作者: Mango
给定一个包含 n 个整数和 q 个查询的数组,打印给定索引元素右侧的下一个更大元素的数量。例子:一种天真的方法是对每个查询从索引到结尾进行迭代,并找出右边的下一个更大元素的数量。这将不够高效,因为我们运行两个嵌套循环时间复杂度:O(N) 来回答一个查询。辅助空间:O(1)更好的方法是存储每个元素的下一个更大的索引,并为每个从索引迭代的查询运行一个循环,并将递增的计数器保持为 j = next[i]...
📅  最后修改于: 2021-09-17 06:57:52        🧑  作者: Mango
给定一个由N 个正整数组成的数组arr[],任务是找到 arr[] 的最大严格递增子序列,使得 arr[] 中所选元素的索引和所选元素分别是彼此的倍数。注意:考虑对数组arr[]进行基于 1 的索引。例子:Input:arr[] = {1, 4, 2, 3, 6, 4, 9}Output:3Explanation:We can choose index 1, 3, 6 and values are...
📅  最后修改于: 2021-09-17 06:57:58        🧑  作者: Mango
给定一个字符串str包含字符(,),{,},[,]和?.任务是找出何时形成的平衡括号表达式的总数?可以用任何括号字符替换。以下是平衡括号表达式的一些示例:{([])}、{()}[{}]等。并且,不平衡的括号表达式:{[}、{()]、{()}[)等。例子:Input:str = “(?([?)]?}?”Output:3({([()]]}), ()([()]{}) and ([([])]{}) are...
📅  最后修改于: 2021-09-17 06:58:05        🧑  作者: Mango
给定一个矩阵,其中每个单元格代表点。如何在以下条件下使用两次遍历收集最大点?让给定网格的尺寸为 R x C。1) 第一次遍历从左上角开始,即 (0, 0),应该到达左下角,即 (R-1, 0)。第二次遍历从右上角开始,即 (0, C-1) 应该到达右下角,即 (R-1, C-1)/2) 从点 (i, j),我们可以移动到 (i+1, j+1) or (i+1, j-1) or (i+1, j)3)...
📅  最后修改于: 2021-09-17 06:58:12        🧑  作者: Mango
LCS 问题陈述:给定两个序列,找出它们中存在的最长子序列的长度。子序列是以相同的相对顺序出现的序列,但不一定是连续的。例如,“abc”、“abg”、“bdf”、“aeg”、’”acefg”等都是“abcdefg”的子序列。所以一个长度为 n 的字符串有 2^n 个不同的可能子序列。它是一个经典的计算机科学问题,是 diff(输出两个文件之间差异的文件比较程序)的基础,在生物信息学中有应用。例子:...
📅  最后修改于: 2021-09-17 06:58:18        🧑  作者: Mango
给定一个二维网格,其中每个单元格都包含整数成本,表示遍历该单元格的成本,我们需要找到一条从左上角单元格到右下角单元格的路径,使总成本最小。注意:假设输入矩阵中不存在负成本周期。这个问题是下面问题的扩展。允许向右和底部移动的最小成本路径。在之前的问题中,只允许向右和向下走,但在这个问题中,我们允许向下、向上、向右和向左走,即在所有 4 个方向上。例子:使用类似于前一个问题的动态规划来解决这个问题是不...
📅  最后修改于: 2021-09-17 06:58:24        🧑  作者: Mango
给定 N 个元素,编写一个程序,打印其相邻元素差为 1 的最长递增子序列的长度。例子:Input : a[] = {3, 10, 3, 11, 4, 5, 6, 7, 8, 12}Output : 6Explanation: 3, 4, 5, 6, 7, 8 is the longest increasing subsequence whose adjacent element differs b...
📅  最后修改于: 2021-09-17 06:58:31        🧑  作者: Mango
给定一个数组arr[],任务是找到具有给定 OR 值M的最长子序列。如果没有这样的子序列,则打印0。例子:Input:arr[] = {3, 7, 2, 3}, M = 3Output:3{3, 2, 3} is the required subsequence3 | 2 | 3 = 3Input:arr[] = {2, 2}, M = 3Output:0编程需要懂一点英语方法:一个简单的解决方案...