c++
kki_m
这个作者很懒,什么都没留下…
展开
-
scanf语句的返回值EOF的利用
while(scanf("%d",&x)!=EOF){}该循环语句条件常被使用于测试数据可能不止一组,但又不能使用死循环从而导致程序结束不了程序超时。首先要了解一下scanf函数。scanf()函数是有返回值的,它会返回被输入函数成功赋值的变量个数。在程序测试过程中,如果仍有测试数据未被测试完,那么scanf会将值赋给变量,返回1,循环条件成立则继续循环。如果测试数据结束,scanf无法对变量进行赋值,于是scanf()返回EOF(end of file)。此时循环条件不成立,程序结束。...原创 2022-01-21 16:40:46 · 3111 阅读 · 1 评论 -
二叉树基本操作(层序、先序创建,遍历方式等)
关于树的操作,大部分都是使用递归的思想。只有层序构建二叉树时需要注意一下,它通过使用队列的方式记录每一个节点,当一个节点有孩子节点时,就将孩子节点添加到队列中。当队列为空时,则说明二叉树建立完毕。具体操作都在代码中。#include <iostream>#include <queue>using namespace std;typedef struct node{ char data; node *lchild,*rchild; //节点中包含节点的数值和其左右两个节原创 2021-12-06 11:50:55 · 264 阅读 · 0 评论 -
C++快速排序详解
快速排序的效率取决于选择的基准数,平均速度O(nlog(n))。我所选择的基准数为数组中左边第一个数,这样可能会导致面对如数据序列:5,4,3,2,1时,需要的计算高度为5.如果以二分法的方式选择基准,类似这样的问题则可以解决。直接以代码为例#include <iostream>#include <vector>using namespace std;void quicksort(int left,int right,vector<int> &arr)原创 2021-12-08 21:38:55 · 853 阅读 · 0 评论 -
走楼梯的三种算法(递归,备忘录法,动态规划)
问题描述:一共有十级台阶,每一次只能上1级或2级,问一共有多少种上台阶的方法。解析:这个问题可以从一阶、两阶、三阶来入手。一阶显然只有一种上法发,两阶则有两种上法,三阶则是一阶和两阶上法的总和。根据这样的思路,我们很容易就可以得到公式:f(n) = f(n-1) + f(n-2)对于本问题10阶,则只需要求出9阶8阶的上法和,要知道9阶上法则需要知道8阶和7阶的上法和…直到1阶和2阶。因此很容易就可以写出一个递归的算法int get(int n){//递归 if(n<1) retu原创 2021-12-09 13:23:05 · 2443 阅读 · 0 评论 -
动态规划简单例子——国王与金矿(c++)
动态规划的要点:确定全局最优解和最优子结构之间的关系,以及问题的边界。以数字的形式表达就是状态转移方程式。下面以一个例子来对他们进行描述。问题描述:有一个国家发现了5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人人数也不同。参与挖矿工人的总数是10人。每座金矿要么全挖,要么不挖 ,不能派出一半人挖取一半金矿。要求如何分配工人才能挖出最多的黄金。第一座金矿含金500,需要5人;第二座金矿含金200,需要3人;第三座金矿含金300,需要4人;第四座金矿含金350,需要3人;第五座金矿含金400,需要5原创 2021-12-10 16:28:43 · 719 阅读 · 0 评论 -
AVL树的建立解析含代码(C++)
AVL树AVL树是平衡二叉树,它可以尽可能创建“枝繁叶茂”的树,防止树枝过长过少。二叉树搜索中,会引入ASL平均查找长度的概念,表示查找所有节点的比较次数平均值。平衡二叉树的ASL相较而言较小。思路AVL树就是比较各个节点左右子树的深度差,当差值等于2时就需要对树结构进行改变。改变的方式有左旋、右旋、左右旋以及右左旋。判断旋转方式是看导致深度差值的结点在哪。左旋是顺时针旋转相关结点,右旋为逆时针旋转相关结点。左右旋及右左旋为左旋、右旋的组合,左右旋先右旋后左旋。如下面图的示例:以上图片来自陈原创 2021-12-31 11:11:28 · 782 阅读 · 0 评论 -
二叉树节点删除、添加等操作(C++)
二叉树节点删除操作可以分为三种情况:叶子节点有左或右孩子节点既有左孩子又有右孩子思路:只为叶子节点,可直接删掉,使用delete()函数(C语言中是free)释放节点;有单个孩子节点,则让孩子节点接替要删除的节点;同时有左右孩子节点,则查找右子树中最小值,将其值付给要删除的节点,然后删除右子树中最小节点(其实就是将要删的节点换了个值,整体结构都不变,删掉的是最小节点)#include <iostream>using namespace std;typedef struct原创 2021-12-21 16:30:32 · 2405 阅读 · 3 评论