02 2022 档案
摘要:#include<iostream>using namespace std;struct node{ int data;//结点的内容 int left;//左子树 int right;//右子树 int size;//子树大小,含本结点 int cnt; //相同内容的个数 } Bst[10010
阅读全文
摘要:二叉搜索树的定义(性质):二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于(等于)它的根节点的值;(2)若右子树不空,则右子树上所有结点的值均大于(等于)它的根结点的值;(3)左、右子树也分别为二叉搜索树;例如:int a [] = {5,3,4
阅读全文
摘要:map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡
阅读全文
摘要:c++ stl集合(Set)是一种包含已排序对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素。2) 不提供直接存取元素的任何操作
阅读全文
摘要:向量(vector):是一个顺序容器(Sequence Container),它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组(元素个数可变)。vector的插入和删除不支持在任意位置O(1)插入,所以为了保证vector的效率,一般增删在末尾进行; 头文件#inclu
阅读全文
摘要:归并排序,分治的典型应用,归并排序的实现有两种方法1.自上而下的递归2.自下而上的迭代 算法思想:1.申请空间,使其大小为两个已排序序列之和,该空间用来合并后的序列。2.设两个指针,最初位置分别在两个排序序列的起始位置。3.比较两个指针所指向的元素,选择相对小的元素放入合并空间,并移动到下一个位置。
阅读全文
摘要:算法思想:1.从一个新数列中挑选一个元素称为“基准”pivot。2.重新排序数列所有元素。比基准值小的摆放在基准元素之前,所有比基准值大的元素摆放在基准之后(相同的数可以摆放到任意一边)。在这个分区退出之后,该基准元素处于数列的中间位置。这个操作叫分区(partition)操作。3.递归地(recu
阅读全文
摘要:汉诺塔是计算机学教科书中常用的游戏,用来说明递归的魔力。该游戏有3个柱子和一组不同大小的圆盘,柱子从圆盘的中心穿过。游戏开始时,所有圆盘叠放在左侧第一个柱子上,如图 1 所示。 游戏的目标是将所有的圆盘从第一个柱子移动到第三个柱子,同时遵守以下规则: 1.除了被移动时,所有圆盘都必须放在柱子上。2.
阅读全文
摘要:题目描述 给出一个长度为n 的序列a,选出其中连续且非空的一段使得这段和最大。 输入格式 第一行是一个整数,表示序列的长度 n。 第二行有 n 个整数,第 i 个整数表示序列的第 i 个数字 a[i]。 输出格式 输出一行一个整数表示答案。 输入输出样例 输入 #172 -4 3 -1 2 -4
阅读全文