C++ 中的斯特恩二进位序列数2025 年 5 月 24 日 | 4 分钟阅读 在本文中,我们将讨论 C++ 中的斯特恩双原子数列及其方法、示例、时间复杂度和空间复杂度。 斯特恩双原子数列斯特恩双原子数列是一个与 Calkin-Wilf 树密切相关的整数数列,它遵循特定的递推关系。该数列如下所示: 0, 1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, 2, 5, 3, 4, … 这个数列,也被称为 fusc 函数,在组合数学和数论中有许多应用。 数论中的二叉 Calkin-Wilf 树是一种树,其中每个顶点唯一地表示一个正有理整数。树的子节点定义为 1/1+1/q=a/a+b 和 q+1=a+b/b,根节点为 1,可以是任何有理整数 q,以其最基本的分数形式 b/a 表示。 这确保了所有正有理数在树中只出现一次。开普勒的《世界的和谐》是第一批包含这一概念的作品之一,该概念以尼尔·卡尔金和赫伯特·威尔夫的名字命名。 从广度遍历这棵树会生成 Calkin-Wilf 数列。有趣的是,fusc 函数可以有效地计算斯特恩双原子数列,该数列由这次遍历中的分子(或分母,偏移一位时)的序列表示。 斯特恩双原子数列,表示为 P(n),递归定义如下: 基本情况P(0)=0,P(1)=1 递推关系 如果 n 是偶数 如果 n 是奇数 这个数列在数论中很重要,可以用于 Farey 数列和连分数。在斯特恩双原子数列中,前几项是 0,1,1,2,1,3,2,3,1,4,3,5,2,5,3,4,… 方法与计算斐波那契数类似,可以使用动态规划(P)来有效地解决这个问题。我们从一个 P 数组开始,其中基本情况是 P[0] = 0 和 P[1] = 1。之后,我们从 i = 2 迭代到 n,根据斯特恩双原子数列的递推关系计算每个 P[i] 如果 i 是偶数,我们使用 如果 i 是奇数,我们使用 为了实现 O(n) 的时间复杂度,我们通过存储以前计算的值来避免不必要的计算。我们的最终结果 P[n] 有效地提供了数列中所需的元素。 算法让我们来看一个算法。 示例让我们举一个例子来说明 C++ 中的 斯特恩双原子数列。 输出 Enter the value of n: 15 The 15th element of Stern's Diatomic Sequence is: 4 复杂度分析
说明提供的 C++ 程序使用动态规划有效地计算斯特恩双原子数列的第 n 个成员。为了避免递归方法的指数增长,它通过初始化一个向量来存储计算值,从而确保 O(n) 的时间复杂度。该数列表现出以下递推关系:对于奇数索引 S(n) = S((n-1)/2) + S((n+1)/2),对于偶数索引 S(n) = S(n/2)。程序在验证用户输入以确保值不为负后,计算匹配的数列元素。如果输入被视为无效,则会打印错误消息并返回非零状态。在任何其他情况下,都使用结构化输出格式显示计算结果。该方法在减少冗余计算的同时,确保了高效的计算。 下一主题C++ 中的结构化绑定 |
一种称为格约简的数学技术,用于数值分析、计算几何和密码学,以在高维环境中处理格。在数学中,格是由一组基向量的整数组合组成的欧几里得空间网格状结构。约简格的……
7 分钟阅读
笛卡尔树排序是一种独特的排序算法,它利用笛卡尔树信息结构来实现高效的数字排序。要理解这套规则,深入了解笛卡尔树的概念、它们的生成以及...
阅读 12 分钟
在本文中,我们将讨论 C++ 中的 Std::codecvt_out 和 Std::do_out 函数及其特性、示例、优点和缺点。引言:自创建以来,文本处理和字符编码一直是 C++ 的核心。随着该语言的发展,其方法也为...
阅读 6 分钟
在本例中,我们将讨论一个问题。问题陈述:假设我们有一个 n × n 的字符网格,其中包含星号 (*) 和点 (.)。除两个单元格外,所有单元格都用点表示。我们需要将另外两个单元格标记为角点以创建...
阅读 6 分钟
在本文中,我们将讨论 C++ 中 MVC Sieve of Sundaram 和 MVVM Sieve of Sundaram 之间的 Sieve of Sundaram。在讨论它们的 Sieve of Sundaram 之前,我们必须 Sieve of Sundaram MVC Sieve of Sundaram 和 MVVM Sieve of Sundaram 在 C++ 中的 Sieve of Sundaram 及其 Sieve of Sundaram。什么是 MVC (Model View and Controller) Sieve of Sundaram?Model, View, and Controller...
7 分钟阅读
五重斐波那契数(Pentanacci numbers)代表一个数列。该数列进一步扩展了斐波那契数列的定义。斐波那契数列由两个起始数字构成。随后的每个数字是前两个数字之和。将此概念推而广之,五重斐波那契数则应用了前五个起始数字……
阅读 4 分钟
在本文中,我们将讨论具有语法和示例的 Consteval 说明符。什么是 Consteval 说明符?consteval 说明符用于声明 C++ 中的一个即时函数。必须在编译时求值以获得常量的函数称为即时函数...
阅读 2 分钟
C++ 中的 `std::atomic_flag_test_and_set` 和 `std::atomic_flag_test_and_set_explicit` 函数是 `
阅读 4 分钟
在本文中,我们将讨论如何找到 . 这里,考虑一个矩阵数组[][],其左上角由星号 (*) 标记,表示我们当前的位置,包含食物的单元格由井号 (#) 表示,'O' 表示空格,...
7 分钟阅读
在本文中,我们将讨论 C++ 中内存池与动态分配之间的区别。在讨论它们的区别之前,我们必须了解内存池和动态分配及其特性和用例。什么是内存池?内存池是一种优化机制,旨在...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India