随笔分类 - c++
摘要:while(scanf("%d",&x)!=EOF){}该循环语句条件常被使用于测试数据可能不止一组,但又不能使用死循环从而导致程序结束不了程序超时。首先要了解一下scanf函数。scanf()函数是有返回值的,它会返回被输入函数成功赋值的变量个数。在程序测试过程中,如果仍有测试数据未被测试完,那么
阅读全文
摘要:AVL树 AVL树是平衡二叉树,它可以尽可能创建“枝繁叶茂”的树,防止树枝过长过少。二叉树搜索中,会引入ASL平均查找长度的概念,表示查找所有节点的比较次数平均值。平衡二叉树的ASL相较而言较小。 思路 AVL树就是比较各个节点左右子树的深度差,当差值等于2时就需要对树结构进行改变。改变的方式有左旋
阅读全文
摘要:二叉树节点删除操作可以分为三种情况: 叶子节点 有左或右孩子节点 既有左孩子又有右孩子 思路: 只为叶子节点,可直接删掉,使用delete()函数(C语言中是free)释放节点;有单个孩子节点,则让孩子节点接替要删除的节点;同时有左右孩子节点,则查找右子树中最小值,将其值付给要删除的节点,然后删除右
阅读全文
摘要:动态规划的要点:确定全局最优解和最优子结构之间的关系,以及问题的边界。以数字的形式表达就是状态转移方程式。下面以一个例子来对他们进行描述。 问题描述: 有一个国家发现了5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人人数也不同。参与挖矿工人的总数是10人。每座金矿要么全挖,要么不挖 ,不能派出一
阅读全文
摘要:问题描述: 一共有十级台阶,每一次只能上1级或2级,问一共有多少种上台阶的方法。 解析: 这个问题可以从一阶、两阶、三阶来入手。一阶显然只有一种上法发,两阶则有两种上法,三阶则是一阶和两阶上法的总和。 根据这样的思路,我们很容易就可以得到公式: f(n) = f(n-1) + f(n-2) 对于本问
阅读全文
摘要:快速排序的效率取决于选择的基准数,平均速度O(nlog(n))。 我所选择的基准数为数组中左边第一个数,这样可能会导致面对如数据序列:5,4,3,2,1时,需要的计算高度为5.如果以二分法的方式选择基准,类似这样的问题则可以解决。 直接以代码为例 #include <iostream> #inclu
阅读全文
摘要:关于树的操作,大部分都是使用递归的思想。只有层序构建二叉树时需要注意一下,它通过使用队列的方式记录每一个节点,当一个节点有孩子节点时,就将孩子节点添加到队列中。当队列为空时,则说明二叉树建立完毕。具体操作都在代码中。 #include <iostream> #include <queue> usin
阅读全文
摘要:Vector 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。 以int类型为例,创建数组:vector a; 包含函数(常用) push_back
阅读全文
摘要:Map是以键值对的存放方式存在的。使用之前应该引用关于它的头文件。 常用到的函数 插入 //下面三种方式都可以使用 map1.insert(pair<int,char>(1,'a')); map1.insert(unordered_map<int,char>::value_type(1,'a'));
阅读全文

浙公网安备 33010602011771号