📝 动态编程

1324篇技术文档
  计算两个字符串的公共子序列

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

给定两个字符串S和Q。任务是统计S和T中公共子序列的个数。例子:Input : S = “ajblqcpdz”, T = “aefcnbtdi”Output : 11Common subsequences are : { “a”, “b”, “c”, “d”, “ab”, “bd”, “ad”, “ac”, “cd”, “abd”, “acd” }Input : S = “a”, T = “ab”...

  0-1 背包问题 | DP-10

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

给定n个物品的重量和价值,将这些物品放入容量为W的背包中,得到背包中的最大总值。换句话说,给定两个整数数组 val[0..n-1] 和 wt[0..n-1],它们分别表示与 n 个项目相关的值和权重。同样给定一个代表背包容量的整数 W,找出 val[] 的最大值子集,使得该子集的权重之和小于或等于 W。你不能破坏一个项目,要么选择完整的项目,要么不不选择它(0-1 属性)。方法 1:通过 Brut...

  对数组执行给定操作后,位于 [L, R] 范围内的 S 模 M 值的最大计数

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

给定一个由N 个整数和整数M, L, R 组成的数组 arr[]。考虑一个变量S(最初为0)。任务是在对给定数组中的每个元素执行以下操作后,找到位于[L, R]范围内的 S % M值的最大计数:将arr[i]或arr[i] – 1 添加到S。将 S 更改为 S % M。例子:Input:arr[] = {17, 11, 10, 8, 15}, M = 22, L = 14, R = 16Outpu...

  双音旅行商问题

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

给定一个二维数组,arr[][]表示二维空间上N个顶点的坐标列表,该列表已经按 x 坐标和 y 坐标排序,任务是找到从最左边开始的游览的最小距离顶点,严格地向右走,然后在到达最右边的顶点时,游览严格地从右到左回到起始顶点。例子:Input:N = 7, arr[][] = {{0, 6}, {1 0}, {2 3}, {5 4}, {6 1}, {7 5}, {8 2}}Output:25.582...

  最多 4 个 X 次、最多 5 个 Y 次和最多 6 个 Z 次形成的所有数字的总和

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

给定三个整数X、Y和Z,任务是在模 10^9+7 下找到最多4个X次、最多5个Y次和最多6个Z次形成的所有数字的总和。例子:方法:由于这个问题具有子问题重叠和最优子结构的性质,因此可以使用动态规划来解决它。对于所有i < x, j < y, j < z,需要具有精确i 4s、j 5s和k 6s的数字才能获得所需的总和。因此,dp 数组exactnum[i][j][k]将存储具有精确i 4s、j 5...

  检查给定字符串是否存在给定模式

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

给定两个字符串text和长度分别为M和N 的模式,任务是检查模式是否与文本匹配。如果发现是真的,则打印“是”。否则,打印“否”。注意:模式可以包含字符“*”和“•”当前字符之前“*”匹配零个或多个字符权‘•’匹配任何信号字符。例子:Input:pattern = “ge*ksforgeeks”, text = “geeksforgeeks”Output:YesExplanation:Replaci...

  不包含相邻元素的子集计数

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

给定一个由N 个整数组成的数组arr[],任务是找到不包含给定数组中相邻元素的所有子集的计数。例子:Input:arr[] = {2, 7}Output:3All possible subsets are {}, {2} and {7}.Input:arr[] = {3, 5, 7}Output:5编程需要懂一点英语方法 1:想法是使用位掩码模式来生成本文中讨论的所有组合。在考虑一个子集时,我们需...

  使数组排序所需的最小增量或减量操作

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

给定一个由N 个整数组成的数组arr[],任务是通过执行最少数量的操作以非递减顺序对数组进行排序。在单个操作中,数组的元素可以增加或减少1。打印所需的最少操作次数。例子:Input:arr[] = {1, 2, 1, 4, 3}Output:2Add 1 to the 3rd element(1) and subtract 1 fromthe 4th element(4) to get {1, 2...

  硬币游戏赢家,每个玩家都有三个选择

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

A 和 B 正在玩游戏。一开始有n个硬币。给定另外两个数字 x 和 y。在每次移动中,玩家可以选择 x 或 y 或 1 个硬币。 A 总是开始游戏。选择最后一个硬币的玩家赢得游戏,或者无法选择任何硬币的人输掉游戏。对于给定的 n 值,如果双方都以最佳方式进行游戏,请找出 A 是否会赢得比赛。例子:让我们为 x = 3, y = 4 取一些 n 的示例值。n = 0 A 不能选择任何硬币,所以他输了...

  最大化获得给定总和所需的数组元素数

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

给定一个整数V和一个由N 个整数组成的数组arr[],任务是找到可以从数组arr[] 中选择的最大数组元素数,以获得总和V。每个数组元素可以被选择任意次数。如果无法获得总和,则打印-1。例子:Input:arr[] = {25, 10, 5}, V = 30Output:6Explanation:To obtain sum 30, select arr[2] (= 5), 6 times.Ther...

  四重数

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

四联数是由递推关系定义的斐波那契数的推广T(n) = T(n-1) + T(n-2) + T(n-3) + T(n-4)withT(0)=0, T(1)=1, T(2)=1, T(3)=2,编程需要懂一点英语对于 n>=4。它们代表斐波那契 n 步数的 n=4 情况。 n=0, 1, … 的前几项是 0, 1, 1, 2, 4, 8, 15, 29, 56, 108, 208, …给定一个数字 N...

  计算具有恰好 K 个非零数字和不同奇数数字和的数字

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

给定一个整数N和一个数字K,任务是找出从 0 到 N 恰好有 K 个非零数字的总数,这些数字的总和应该是奇数,并且该总和应该是不同的。数字 N 可以大到10^18。例子:Input :N = 10, K = 1Output :5The numbers which follow the conditions are ->1, 3, 5, 7 and 9The digit sum of 10 that...

  在 N×N 棋盘上放置 K 个主教的方法,以便没有两个攻击

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

给定两个整数N和K,任务是找到将K 个象放在N × N棋盘上的方法的数量,以便没有两个象互相攻击。Here is an example for a 5×5 chessboard.编程需要懂一点英语例子:Input:N = 2, K = 2Output:4The different ways to place 2 bishops in a 2 * 2 chessboard are :Input:N ...

  连续跳过两次完成任务的最短时间

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

给定 n 个任务所花费的时间。求完成任务所需的最短时间,使得允许跳过任务,但不能跳过两个连续的任务。例子 :预期时间复杂度为 O(n),额外空间为 O(1)。给定的问题具有以下递归性质。让minTime(i)是完成第 i 个任务的最短时间。它可以写成两个值中的最小值。如果第 i 个任务包含在列表中,则最短时间为 incl(i)如果从结果中排除第 i 个任务的最短时间,让这个时间为 excl(i)如...

  断字问题 | DP-32

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

给定一个输入字符串和一个单词字典,找出输入字符串可以分割成一个以空格分隔的字典单词序列。有关更多详细信息,请参阅以下示例。这是一个著名的谷歌面试问题,现在也被许多其他公司问到。递归实现:这个想法很简单,我们考虑每个前缀并在字典中搜索它。如果前缀存在于字典中,我们会重复字符串的其余部分(或后缀)。Python3C++JavaCPPCPP输出如果对后缀的递归调用返回真,我们返回真,否则我们尝试下一个前...