
C++算法
文章平均质量分 66
棉猴
这个作者很懒,什么都没留下…
展开
-
C++动态规划之最长上升子序列
从图1中可以看出,在遍历素组中的元素时,如果该元素的值大于该元素之前的元素值时,就有可能构成上升子序列,此时需要找到之前元素对应的最长子序列的长度,找到这些长度的最大值,并且对该最大值加1,即为当前元素对应的最长子序列。例如序列A={1,3,5,4,2},删除其中的第3项和第5项,得到序列B={1,3,4},删除其中的第3项和第4项,得到序列C={1,3,2},此时序列B和C是序列A的子序列。例如,序列D={1,5},是序列A的上升子序列,但不是最长上升子序列,而序列B是A的最长上升子序列。原创 2023-03-03 09:34:15 · 7728 阅读 · 1 评论 -
C++算法之动态规划1
动态规划的思想是将待求解问题分解成若干简单的子问题,提取这些子问题的特征,这些子问题可以看成解决问题的各个阶段,解析来寻找各阶段间相互转移的公式,最后按顺序求解每一阶段的问题。各阶段间的转移公式又叫“状态转移方程”,使用动态规划思想解决问题,实际上就是确定该问题的“状态转移方程”。原创 2023-03-02 09:20:45 · 527 阅读 · 0 评论 -
C++中二叉树的递归遍历方法2-2
在中提到,二叉树的层序遍历的输出顺序是从根节点开始,一层一层横向遍历各个节点。如图1所示的二叉树,层序遍历的输出的输出顺序为“1->2->3->4->5->6”。图1 二叉树结构。原创 2022-12-26 10:21:47 · 925 阅读 · 0 评论 -
C++中二叉树非递归遍历方法3-3
层序遍历的含义是二叉树按照从根节点到叶子节点的层次关系,一层一层横向遍历各个节点。如图1所示的二叉树,按照层序遍历方法输出的结果为“1->2->3->4->5->6”。图1 二叉树所以,广度优先搜索一般使用层序遍历。原创 2022-12-24 10:25:58 · 632 阅读 · 0 评论 -
C++中二叉树的递归遍历方法2-1
在中提到,二叉树的遍历分为前序遍历、中序遍历、后序遍历和层序遍历四种。要遍历的二叉树如图1所示。图1 二叉树结构创建该二叉树的代码请参见。原创 2022-12-21 10:41:35 · 771 阅读 · 0 评论 -
C++中二叉树的非递归遍历方法3-2
因此,对于图1所示的节点图,采用中序遍历的输出结果是“4->2->5->1->3->6”。因此,对于图1所示的节点图,采用中序遍历的输出结果是“4->5->2->6->3->1”。在“2 二叉树的遍历方法”中提到,二叉树的遍历方法有前序遍历、中序遍历、后序遍历属于深度优先遍历。因为前序遍历的输出顺序是根节点、左子树、右子树,所以以前序的方式遍历图1所示的二叉树,则输出的顺序应为“1->2->4->5->3->6”。从图1的根节点(值为1的节点)开始,根据图2的流程图,可以得到如图3所示的步骤。原创 2022-12-13 09:49:52 · 1097 阅读 · 0 评论 -
C++中二叉树的非递归遍历方法3-1
树是一种数学上的抽象,在算法的设计与分析中起到一个中心作用。树是有n个节点的有限集合。二叉树是树的一种特殊形式,这种树的每个节点最多有2个子节点。int data;};其中,data表示该节点的值;leftChild和rightChild是节点的指针,分别表示该节点的左子节点和右子节点。从图1中可以看出,该二叉树包含6个节点。原创 2022-12-13 09:46:02 · 849 阅读 · 0 评论