C++ 中的恩特林格数2025年5月14日 | 阅读 4 分钟 在本文中,我们将讨论 C++ 中的 Entringer 数及其多种实现方法。 什么是 Entringer 数?Entringer 数用 E(n, k) 表示,其中 n 是元素总数 +1,k 表示元素中应存在的上升数。Entringer 数将提供可能的排列数,其中数字是递增和递减的,并且该排列必须包含 k 个上升。 例如如果 Entringer 数是 E(4, 2),则可能的排列数为 3 2 4 1 5 3 2 5 1 4 3 1 4 2 5 3 1 5 2 4 因此,可能的总排列数为 4 Entringer 数的应用是这些数字主要用于组合枚举。这些 Entringer 数使用动态规划计算,并用于算法实现。这些数字提供了组合关系和结构。 示例 1让我们编写一个 C++ 程序来计算 Entringer 数。 输出 ![]() 说明程序中存在的变量是 length,它表示排列的长度,以及 index,它表示 Entringer 数表示中的 k 值。这些值作为输入从用户处获取。“entringerNumber”是一个使用递归计算 Entringer 数的函数。 递归函数以 number 和 index 作为参数。当 length 等于零且 index 等于零时,我们都知道只有一个可能的 Entringer 数,因此它返回 1。如果 index 为零且 length 不等于零,它将返回零。否则,将有两个递归调用:一个将 length 减 1,另一个将 length 和 index 都减 1。在主函数中,首先调用这个 entringerNumber。 示例 2:使用动态规划让我们编写另一个 C++ 程序来使用动态规划计算 Entringer 数。 输出 ![]() 说明该程序在给定 length 和 index 时计算 Entringer 数。该程序优化了上述递归方法。该程序使用动态规划来减少运行时。在此程序中,用户必须输入 length 和 index。使用大小为 length+1 和 index+1 的 2D 向量。之后,使用嵌套循环遍历 DP 表的单元格,从 (1,1) 到 (length, index)。在这里,使用公式 E(i,j) = E(i,j-1) + E(i-1,j-1) 来计算 Entringer 数。计算出的值存储在 DP 表中,并可在后续迭代中使用。 示例 3:使用动态规划和优化空间让我们编写一个 C++ 程序来使用动态规划和优化空间来计算 Entringer 数。 输出 ![]() 说明这个程序是对上一个程序的空间优化。在之前的程序中,使用 2D 数组进行动态规划,但这里使用单个数组进行动态规划,因此该程序所需的空间将是 O(n),运行时为 O(n*k)。 |
Nim 21 游戏是经典数学游戏 Nim 的一个变体,Nim 用于例证组合博弈论原理。在 Nim 游戏中,最后取走物品的玩家获胜;其他变体有玩家从...中取走物品。
阅读 16 分钟
在编程中,数组是一种数据结构,它包含相同数据类型元素的集合。这些项存储在连续的内存位置中,这意味着它们按顺序存储在内存中。数组通常用于处理一组可比的……
5 分钟阅读
在本文中,我们将通过几个示例学习 C++ 中的总汉明距离。不同长度(通常是二进制字符串)的两个字符串之间的不相似性使用称为总汉明距离的矩阵来度量。它测量两个字符串对应位之间的差异...
阅读 4 分钟
简介:享元模式是 GoF(Gang of Four)描述的结构设计模式之一。当您需要高效地支持大量细粒度对象时,可以使用它。该模式旨在通过尽可能地与相似对象共享来最小化内存使用或计算成本……
14 分钟阅读
循环矩阵是一个方阵,其中每一行都是其前一行旋转移位的结果。这些矩阵在信号处理、编码理论和数值分析等领域都有应用。循环矩阵的定义:循环矩阵的数学结构...
阅读 4 分钟
确定函数独占时间的问题涉及计算程序中每个函数执行所花费的时间,不包括任何嵌套函数调用所花费的时间。通过分析由元组(id,type,timestamp)表示的函数开始和结束事件的日志,其中“id”...
14 分钟阅读
概述 配置文件引导优化 (PGO) 是 C 中的一种高级优化方法,它利用运行时配置文件数据在编译技术期间做出更明智的选择,从而提高软件包的性能。与依赖静态分析和普通优化启发式的传统编译技术不同,PGO 包括……
阅读 6 分钟
一个 21 边形数称为二十一边形数。根据公式 P21 (k) = k.(19k−17)/2,其中 k 是序列的位置。1、21、62、124 等数字依次排列。该概念的 C++ 实现将是...
阅读 4 分钟
Thue-Morse 序列,也称为 Prouhet-Thue-Morse 序列,是一种优雅且无限的二进制序列,几十年来一直吸引着数学家、计算机科学家和理论家。它构造简单,结合其丰富的数学性质,使其成为人们极大兴趣和……的主题。
阅读 16 分钟
简单的基于 RAII 的互斥锁 std::lock_guard 在构造时锁定互斥锁,在销毁时释放它,而不提供用户控制。另一方面,std::unique_lock 函数更加灵活,因为它允许所有权转移、定时锁定、手动解锁和延迟锁定。对于...
阅读 10 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India