📝 动态编程

1324篇技术文档
  其字符可以重新排列以形成回文的最长子串

📅  最后修改于: 2021-09-17 06:53:36        🧑  作者: Mango

给定一个长度为N的字符串S,它只包含小写字母。找出S的最长子串的长度,使得其中的字符可以重新排列形成回文。例子:Input:S = “aabe”Output:3Explanation:The substring “aab” can be rearranged to form “aba”, which is a palindromic substring.Since the length of “a...

  通过连接长度为素数的不相交子数组获得的最大子序列和

📅  最后修改于: 2021-09-17 06:53:43        🧑  作者: Mango

给定一个大小为N的数组arr[],任务是找到由连接长度为素数的不相交子数组形成的子序列的最大和。例子:Input:arr[] = {10, 10, 7, 10, 10, 10}Output:50Explanation:Subsequence with maximum sum is obtained by concatenating following two subarrays:{10, 10} ...

  矩阵中递减路径的总数

📅  最后修改于: 2021-09-17 06:53:50        🧑  作者: Mango

给定一个大小为NXN的整数矩阵。任务是找到矩阵中递减路径的数量。您可以从任何单元格开始,从单元格 (i, j) 开始,您可以移动到(i + 1, j), (i – 1, j), (i, j + 1) 和 (i , j – 1)单元格。例子:解决这个问题的想法是使用动态规划。声明一个dp[][]数组,其中dp[i][j] 存储可以从单元格 (i, j) 形成的递减路径的数量。因此,我们将定义一个递归...

  如果一根杆只能切割成给定的 3 种尺寸,则最大限度地增加切割次数

📅  最后修改于: 2021-09-17 06:53:57        🧑  作者: Mango

给定一根长度为N米的杆,该杆只能切成 3 种尺寸A、B和C。任务是最大化杆的切割次数。如果无法进行 cut 则打印-1。例子:Input:N = 17, A = 10, B = 11, C = 3Output:3Explanation:The maximum cut can be obtain after making 2 cut of length 3 and one cut of length...

  能被 8 整除但不能被 3 整除的子串数

📅  最后修改于: 2021-09-17 06:54:03        🧑  作者: Mango

给定字符串数字“0-9”。任务是找到可以被 8 整除但不能被 3 整除的子串的数量。例子 :如果一个数的数字之和能被 3 整除,则这个数能被 3 整除。 如果最后三位能被 8 整除,则这个数能被 8 整除。现在,我们的想法是存储字符串的前缀总和,即前缀的计数,使得前缀模 3 的数字总和为 0、1、2。接下来我们遍历字符串,对于每个位置 i,计算以 i 结尾且可被 8 整除的子串数。从该值中减去以 ...

  给定数组中最长递增素数子序列的长度

📅  最后修改于: 2021-09-17 06:54:10        🧑  作者: Mango

给定一个由N 个正整数组成的数组arr[],任务是找到给定数组中由素数组成的最长递增子序列的长度。例子:Input:arr[] = {1, 2, 5, 3, 2, 5, 1, 7}Output:4Explanation:The Longest Increasing Prime Subsequence is {2, 3, 5, 7}.Therefore, the answer is 4.Input:...

  爆破气球以最大化硬币

📅  最后修改于: 2021-09-17 06:54:17        🧑  作者: Mango

我们得到了 N 个气球,每个气球都有一些与之相关的硬币。在爆破气球 i 时,获得的硬币数量等于 A[i-1]*A[i]*A[i+1]。此外,气球 i-1 和 i+1 现在变得相邻。找出爆破所有气球后获得的最大可能利润。假设每个边界有一个额外的 1。例子:这里讨论了递归解决方案。我们可以使用动态规划来解决这个问题。首先,考虑从左到右(包括)索引的子数组。如果我们假设索引 Last 处的气球是这个子数...

  计算 mXn 矩阵从左上角到右下角的所有可能路径

📅  最后修改于: 2021-09-17 06:54:23        🧑  作者: Mango

问题是计算 mXn 矩阵从左上角到右下角的所有可能路径,其约束条件是从每个单元格只能向右或向下移动例子 :我们已经讨论了打印所有可能路径的解决方案,计算所有路径更容易。令 NumberOfPaths(m, n) 为到达矩阵中行号 m 和列号 n 的路径数,NumberOfPaths(m, n) 可以递归地写成如下。C++JavaPythonC#PHPJavascriptC++JavaPythonC...

  检查一个数组是否可以分成 3 个等和的子序列

📅  最后修改于: 2021-09-17 06:54:29        🧑  作者: Mango

给定一个具有N 个整数的数组arr[]。任务是确定数组是否可以划分为等和的 3 个子序列。如果是,则打印“是”。否则,打印“否”。例子:Input:arr[] = {1, 1, 1}Output:YesExplanation:Here array can be partition into 3 equal sum. {1}Input:arr[] = {40}Output:NoExplanation...

  打印纽曼-康威数列的 n 项

📅  最后修改于: 2021-09-17 06:54:36        🧑  作者: Mango

Newman-Conway 数是生成以下整数序列的数。1 1 2 2 3 4 4 4 5 6 7 7….. 并遵循以下递归公式。给定一个数 n 然后打印纽曼-康威数列的 n 个项例子:C++JavaPython3C#PHPJavascript输出 :如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。...

  生成排序序列的最小删除次数

📅  最后修改于: 2021-09-17 06:54:43        🧑  作者: Mango

给定一个由 n 个整数组成的数组。任务是从数组中移除或删除最少数量的元素,以便当剩余元素按相同的顺序排列时,形成一个递增的排序序列。例子 :一个简单的解决方案是一个一个地删除所有子序列并检查剩余的元素集是否按顺序排列。该解决方案的时间复杂度是指数级的。一种有效的方法使用找到给定序列的最长递增子序列的长度的概念。算法:C++JavaPython3C#PHPJavascript输出 :如果您希望与专家...

  二项式系数 | DP-9

📅  最后修改于: 2021-09-17 06:54:49        🧑  作者: Mango

以下是二项式系数的常见定义。A binomial coefficient C(n, k) can be defined as the coefficient of x^k in the expansion of (1 + x)^n.编程需要懂一点英语A binomial coefficient C(n, k) also gives the number of ways, disregarding ...

  查找具有给定和的子矩阵

📅  最后修改于: 2021-09-17 06:55:02        🧑  作者: Mango

给定一个N x N矩阵和两个整数S和K,任务是找出是否存在总和等于S的K x K子矩阵。例子:Input:K = 2, S = 14, mat[][] = {{ 1, 2, 3, 4 },{ 5, 6, 7, 8 },{ 9, 10, 11, 12 },{ 13, 14, 15, 16 }}Output:Yes1 25 6is the required 2 x 2 sub-matrix with ...

  将字符串拆分为最小部分,使每个部分都在另一个字符串

📅  最后修改于: 2021-09-17 06:55:08        🧑  作者: Mango

给定两个字符串A和B,任务是将字符串A 拆分为最少数量的子字符串,使得每个子字符串都在字符串B 中。注意:如果没有办法分割字符串,则打印-1例子:Input:A = “abcdab”, B = “dabc”Output:2Explanation:The two substrings of A which is also present in B are –{“abc”, “dab”}Input:A...

  找到到达矩阵末尾所需的最小步骤 | 2套

📅  最后修改于: 2021-09-17 06:55:15        🧑  作者: Mango

给定一个由正整数组成的二维矩阵,任务是找到到达矩阵末端所需的最少步数。如果我们在单元格(i, j)那么我们可以去所有由(i + X, j + Y)表示的单元格,使得X ≥ 0,Y ≥ 0并且X + Y = arr[i][j].如果不存在路径,则打印-1。例子:Input:arr[][] = {{4, 1, 1},{1, 1, 1},{1, 1, 1}}Output:1The path will b...