📝 动态编程

1324篇技术文档
  给定数组的最大子序列总和是一个完美的平方

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

给定一个数组arr[],任务是找到形成完美平方的子序列的总和。如果有多个子序列的总和等于一个完全平方数,则打印最大和。解释:Input:arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}Output:36Explanation:Maximum possible sum which is a perfect square that can be obtained from the...

  在有向图中打印负权重循环

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

给定一个由V个顶点和E 个边组成的加权有向图。任务是打印权重和为负的循环路径。如果不存在这样的路径,则打印“-1”。Input:V = 5, E = 5, Below is the graph:Here, for the given negative cycle o/p (1->2->3->4->1) ; In fig there has to be Edge from 4–>1  not fro...

  将数字转换为质数段所需的最小拆分

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

给定一个字符串s形式的数字,任务是计算和显示所需的最小分割,以便形成的段是 Prime 或打印不可能否则。例子:Input:s = “2351”Output :0Explanation:Given number is already prime.Input:s = “2352”Output:2Explanation:Resultant prime segments are 23,5,2Input:...

  查找字符串是否为 K-Palindrome |设置 1

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

给定一个字符串,判断该字符串是否为 K-Palindrome。一个 k 回文字符串转换为一个回文,最多删除 k 个字符。例子 :如果我们仔细分析这个问题,任务是通过从中删除最多 K 个字符来将给定的字符串转换为其反向。问题基本上是编辑距离的变化。我们可以修改编辑距离问题以将给定的字符串及其反向作为输入,并且只允许删除操作。由于给定的字符串与其反向进行比较,我们最多将从第一个字符串删除 N 个,从第...

  通过从头开始重复选择最多 2*M 个数组元素来最大化奇数索引数组元素的总和

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

给定一个由N 个整数和一个整数M(初始为1)组成的数组arr[],任务是在两个玩家A和B根据以下规则进行最佳游戏时,找到玩家 A选择的数组元素的最大和:玩家 A开始游戏。每次都可以从数组的开头选择X个元素,其中X包含在[1, 2*M]范围内,由各自的玩家轮流选择。在上述步骤中选择数组元素后,将这些元素从数组中移除,并将M的值更新为X和M的最大值。上述过程将一直持续到所有数组元素都被选中。例子:In...

  包含所有个位数素数的 N 位数字的计数

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

给定一个正整数N,任务是计算包含所有个位数素数的N位数字的数量。例子:Input:N = 4Output:24Explanation:The number of single digit primes is 4 i.e.{2, 3, 5, 7}. Hence number of ways to arrange 4 numbers in 4 places is 4! = 24.Input:N = 5...

  通过删除 0 个或多个字符将一个字符串转换为另一个字符串的方法

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

给定两个序列 A、B,找出序列 A 中唯一方式的数量,以形成与序列 B 相同的 A 子序列。 转换的意思是将字符串A(通过删除 0 个或多个字符)转换为字符串B。例子:提问:谷歌解决这个问题的想法是使用动态规划。构造一个 m*n 大小的二维 DP 矩阵,其中 m 是字符串B 的大小,n 是字符串A 的大小。dp[i][j]给出了将字符串A[0…j] 转换为 B[0…i] 的方法数。情况 1:dp[...

  在 N 中查找任意数 P 的幂!

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

先决条件:打印所有质因数及其幂给定自然数N和P,任务是在N的因式分解中找到P的幂!.例子Input:N = 4, P = 2Output:3Explanation:Power of 2 in the prime factorization of 4! = 24 is 3Input:N = 24, P = 4Output:11编程需要懂一点英语朴素的方法:这个想法是找到从1 到 N 的每个数字的P的...

  圣殿供品

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

假设一位奉献者希望向寺庙和山脉供养。寺庙排列成一排,高度不同。每个寺庙都应该至少收到一个offer。如果两个相邻的寺庙在不同的高度,那么高的寺庙应该比低的寺庙接受更多的供养。如果两个相邻的寺庙在同一高度,那么它们的供品相对于彼此无关紧要。给定寺庙的数量和寺庙的高度,找出要带的最小供品数量。例子:我们注意到每个寺庙都可以在它旁边的寺庙之上、之下或在同一水平线上。如图所示,每个寺庙所需的供品等于较低高...

  具有相同数量的不同奇数和偶数的 N 位数字的计数

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

给定一个正整数N,任务是计算N位数字的数量,使得数字中不同的奇数和不同的偶数位数相同。例子:Input:N = 2Output :45Explanation:For a 2-digit number, in order to satisfy the condition, the first digit can be even and second digit odd, or the second ...

  将 X 转换为 Y 所需的最小步骤,其中二进制矩阵表示可能的转换

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

给定一个大小为 NxN 的二进制矩阵,其中 1 表示数字 i 可以转换为 j,而 0 表示它不能转换为。还给出了两个数字 X(<N) 和 Y(<N),任务是找到将数字 X 转换为 Y 所需的最少步骤数。如果不可能,则打印 -1。例子:方法:此问题是 Floyd-warshall 算法的变体,其中 i 和 j 之间存在权重为 1 的边,即mat[i][j]==1,否则它们没有边,我们可以将边分配为无...

  计算给定长度 N 的特殊字符串的数量

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

给定字符串的长度 N,我们必须找到长度为 N 的特殊字符串的数量。如果一个字符串仅由小写字母 a 和 b 组成,并且字符串中的两个 a 之间至少有一个 b,则该字符串称为特殊字符串。由于字符串的数量可能非常大,因此将其打印为模 10^9+7。例子:Input:N = 2Output:3Explanation :The number of special string so length 2 are...

  对数组进行排序的最少插入次数

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

给定一个整数数组,我们需要以最少的步骤对这个数组进行排序,其中在一个步骤中,我们可以将任何数组元素从其位置插入到任何其他位置。例子 :我们可以使用动态规划来解决这个问题。要观察的主要事情是移动元素不会改变除被移动元素之外的元素的相对顺序。现在考虑最长递增子序列(LIS),其中相等的元素也被作为递增序列的一部分,现在如果保持这个递增序列的元素不变并移动所有其他元素,那么它将花费最少的步数,因为我们采...

  骑士达到目标的最小步骤| 2套

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

给定一个 N x N 大小的正方形棋盘,给定骑士的位置和目标的位置,任务是找出骑士到达目标位置所需的最小步数。例子 :解决上述问题的 BFS 方法已经在上一篇文章中讨论过。在这篇文章中,讨论了动态规划解决方案。方法说明:情况1:如果目标不在骑士位置的一行或一列。让一个 8 x 8 单元格的棋盘。现在,假设骑士在 (3, 3) 处,目标在 (7, 8) 处。从骑士的当前位置有可能的 8 个移动,即 ...

  使用给定的删除元素规则查找数组的最小可能大小

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

给定一个数字数组和一个常数 k,使用以下删除元素的规则来最小化数组的大小。一次可以移除正好三个元素。移除的三个元素必须在数组中相邻,即arr[i]、arr[i+1]、arr[i+2]。并且第二个元素必须比第一个元素大 k,第三个元素必须比第二个元素大 k,即 arr[i+1] – arr[i] = k 和 arr[i+2]-arr[i+1] =克。例子:来源:https://code.google...