📝 动态编程
1324篇技术文档📅  最后修改于: 2021-09-17 06:50:11        🧑  作者: Mango
给定两个长度相等的数组arr1[]和arr2[],任务是通过从两个数组中选择元素来找到任何可能的子集的最大和,这样子集中的任何两个元素都不应该是连续的。例子:Input:arr1[] = {-1, -2, 4, -4, 5}, arr2[] = {-1, -2, -3, 4, 10}Output:14Explanation:Required subset {4, 10}. Therefore, s...
📅  最后修改于: 2021-09-17 06:50:18        🧑  作者: Mango
给定一个数组序列 [A1, A2…An],任务是找到长度为 k 的递增子序列 S 的最大可能和,使得 S1<=S2<=S3………<=Sk.例子:Input :n = 8 k = 3A=[8 5 9 10 5 6 21 8]Output :40Possible Increasing subsequence of Length 3 with maximum possible sum is 9 10 2...
📅  最后修改于: 2021-09-17 06:50:24        🧑  作者: Mango
给定一个 N x N 矩阵,其中单元格 (i, j) 处的值是从单元格 (i, j) 移动到单元格 (i – 1, j – 1), (i – 1, j) 或 (i , j – 1)。您的任务是在 N x N 矩阵(基于 0 的索引)中找到从 (N – 1, N – 1) 单元格到 (0, 0) 单元格的最大成本路径。但是,您对从一个单元格到另一个单元格的移动有一些限制。如果您在 (i, j) 单元...
📅  最后修改于: 2021-09-17 06:50:32        🧑  作者: Mango
给定具有 N 个节点和 N-1 条边的树,找出当树中的任何节点被视为树的根时树的最大高度。上图表示一棵树有11 个节点和10 条边,以及当节点 1 被视为根时为我们提供最大高度的路径。最大高度为 3。在上图中,当 2 被视为根时,找到的最长路径为红色。一种天真的方法是对每个节点使用 DFS 遍历来遍历树,并在将节点视为树的根时计算最大高度。树的 DFS 遍历的时间复杂度为 O(N)。所有 N 个节...
📅  最后修改于: 2021-09-17 06:50:39        🧑  作者: Mango
给定三个非负整数X、Y和K,任务是找到字符的第K个具有最小辞书字符串X出现“a”和字符Y的出现“B”。例子:Input:X = 2, Y = 3, K = 3Output:abbabExplanation:First lexicographical smallest string = “aabbb”.Second lexicographical smallest string = “ababb”....
📅  最后修改于: 2021-09-17 06:50:45        🧑  作者: Mango
给定一个整数数组和一个数字 K。任务是从给定的数组中找到可被 K 整除的最大和。例子:Input:arr[] = {3, 6, 5, 1, 8}, k = 3Output:18Explanation:18 is formed by the elements 3, 6, 1, 8.Input:arr = { 43, 1, 17, 26, 15 } , k = 16Output:32Explanati...
📅  最后修改于: 2021-09-17 06:50:52        🧑  作者: Mango
给定一个数组arr[],任务是通过反转子数组来最大化偶数索引元素的总和并打印获得的最大总和。例子:Input:arr[] = {1, 2, 1, 2, 1}Output:5Explanation:Sum of initial even-indexed elements = a[0] + a[2] + a[4] = 1 + 1 + 1 = 3Reversing subarray {1, 2, 1, ...
📅  最后修改于: 2021-09-17 06:50:58        🧑  作者: Mango
给定一个二叉树,发现它为Largest我ndependentS等(LIS)的大小。如果子集的任意两个节点之间没有边,则所有树节点的子集是一个独立集。例如,考虑以下二叉树。最大独立集(LIS)为{10, 40, 60, 70, 80},LIS的大小为5。动态规划解决方案以自下而上的方式使用子问题的解决方案来解决给定的问题。可以使用子问题的解来解决给定的问题吗?如果是,那么子问题是什么?如果我们知道 ...
📅  最后修改于: 2021-09-17 06:51:05        🧑  作者: Mango
给定一个整数 N,任务是通过执行以下两个操作来计算将N的值减少到0所需的最小步骤:考虑整数A和B,其中N = A * B(A != 1 and B != 1),将N减少到min(A, B)将N的值减少1例子 :Input:N = 3Output:3Explanation:Steps involved are 3 -> 2 -> 1 -> 0Therefore, the minimum steps ...
📅  最后修改于: 2021-09-17 06:51:11        🧑  作者: Mango
给定两个数字 x, y 表示设置位的数量。还给出了一个数字 C。 任务是打印我们可以形成两个数字 A 和 B 的方式的数量,这样 A 有 x 个设置位,B 有 y 个设置位,A+B = C。例子:方法:上述问题可以使用位掩码DP来解决。将大小为64 * 64 * 64 * 2的4-DDP 数组初始化为 10^18 最多有 64 个设置位,其中 -1DP 数组的第一个状态存储在 C 中从右开始遍历的...
📅  最后修改于: 2021-09-17 06:51:18        🧑  作者: Mango
给定三个整数N、M和K和一个由N 个整数组成的数组a[],其中M和K表示可能移动的总数和当前元素左侧可能移动的次数(按索引移动)一个数组,任务是通过利用所有可用的移动遍历数组来最大化可能的总和。例子:Input:N = 5, M = 4, K = 0, a[] = {1, 5, 4, 3, 2}Output:15Explanation:Since no moves towards left is ...
📅  最后修改于: 2021-09-17 06:51:25        🧑  作者: Mango
给定一个由N 个整数组成的数组 num[],其中每个元素都与另一个数组price[]给出的价格相关联,任务是通过取一个三元组来最小化价格总和,使得num[i] < num[j] <数量[k]。如果没有这样的三元组,则打印 -1。例子:Input:num[]={2, 4, 6, 7, 8}, price[]={10, 20, 100, 20, 40}Output:50Explanation:Sele...
📅  最后修改于: 2021-09-17 06:51:33        🧑  作者: Mango
给定 n 个朋友,每个人都可以保持单身或与其他朋友配对。每个朋友只能配对一次。找出朋友可以保持单身或结对的方式总数。例子:由于上面的递归公式有重叠的子问题,我们可以使用动态规划来解决它。C++JavaPython3C#PHPJavascriptC++JavaPython3C#PHPJavascriptC++JavaPython3C#PHPJavascriptPython3Javascript输出:...
📅  最后修改于: 2021-09-17 06:51:40        🧑  作者: Mango
给定一个整数N,任务是找到长度为N且0和1的频率相等的可能二进制字符串的数量,其中1的频率大于或等于每个前缀子字符串中0的频率。例子:Input:N = 2Output:1Explanation:All possible binary strings of length 2 are {“00”, “01”, “10” and “11”}.Out of these 4 strings, only “...
📅  最后修改于: 2021-09-17 06:51:47        🧑  作者: Mango
给定一个矩阵mat[][]和两个整数K和S,任务是计算所有K x K子矩阵,使得子矩阵中所有元素的总和大于或等于S。例子:朴素的方法:迭代所有可能的大小为K x K 的子矩阵并找到每个矩阵的总和。如果任何子矩阵的总和大于给定的总和S,则将计数加 1。高效方法:思想是预先计算矩阵的前缀和,使得每个子矩阵和的总和可以在 O(1) 时间内计算出来。最后,迭代矩阵的所有可能位置,并根据包含和排除原理检查来...