![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
zan1763921822
这个作者很懒,什么都没留下…
展开
-
根据二叉树的后序和中序遍历推导出层序遍历序列
二叉树的遍历方式有四种,分别是:先序遍历、中序遍历、后序遍历和层序遍历。这四种方式可以分为两类,一类是可以判断出根结点的,如先序遍历、后序遍历、层序遍历,另一类就是可以判断出左右子树的的中序遍历。所以很容易就可以想到如果你想要用四种中的两种来确定这棵树,中序遍历是必不可少的,不然无法分辨左右子树的范围。这道题的大意就是给出一颗二叉树的后序遍历和和中序遍历序列,让我们来求它的层序遍历序列。#...原创 2020-05-04 12:05:01 · 1490 阅读 · 1 评论 -
一个关于DFS思想的程序
只写DFS函数int n,k,x,maxSumSqu = -1,A[maxn];//temp存放临时方案,ans存放平方和最大的方案vector<int> temp,ans;//当前处理index号整数,当前已选整数个数为nowK//当前已选整数之和为sum,当前已选整数平方和为sumSquvoid DFS(int index,int nowK,int sum,int su...原创 2020-04-21 17:51:28 · 136 阅读 · 0 评论 -
通俗易懂的理解深度优先搜索(DFS)
咱们现讲一个有趣的事情,当我们身处在一个巨大的迷宫中,没有任何帮组我们如何走出这迷宫呢?有一种看上去很盲目但实际上很有效的方法。以当前的位置为起点,沿着一条路向前走,当碰到岔路口的时候,选择一个岔路口前进。如果选择的这个岔路前方是一条死路,就退回到这个岔路口,选择另一条岔路前进。如果岔路中存在新的岔路口,那么仍然按照上面的方法枚举新岔路口的每一条岔路。这样,只要迷宫存在出口,那么这个方法就一定能...原创 2020-04-19 17:17:39 · 989 阅读 · 1 评论 -
数据结构基础之链表(二)
接着上一篇,本篇来说一下如何对链表进行操作。创建链表现在已经可以通过malloc或者new来获得若干个零散的结点,接下来就是把这些零散的结点链接起来。很简单,只要把每个结点的next指针指向下一个结点的地址就行了。代码如下://定义结构体已经在上一篇文章中写过了,这里就直接用了ndoe* node1 = new node;ndoe* node2 = new node;ndoe* nod...原创 2020-04-18 22:03:47 · 177 阅读 · 0 评论 -
数据结构基础之链表(一)
线性表是一类很常用的数据结构,分为顺序表和链表。其中顺序表可以简单地理解成前面介绍的“数组”这个概念,接下来我们讲解一下链表。按照正常方式定义一个数组时,计算机会从内存中取出一块连续的地址来存放给定长度的数组;而链表则是由若干个结点组成(每个结点代表一个元素),而且结点在内存中的存储位置通常是不连续的。除此之外,链表的两个结点之间一般通过一个指针来从一个结点指向另一个结点,因此链表的结点一般由两...原创 2020-04-18 17:01:19 · 334 阅读 · 0 评论 -
PAT A1060号题 Are TheyEqual
题目描述:If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are considered equal since they are both saved as 0.123×105 with simple chopping. Now given the number of ...原创 2020-04-10 20:24:26 · 108 阅读 · 0 评论 -
随机选择算法
题目:如何从一个无序的数组中求出第k大的数(假设各数都不同),如数组{5,12,7,2,9,3}来说,第三大的数是5,第五大的数是9.使用随机选择算法比直接排序复杂度降低好多。他的原理类似于随机快速排序。当对a[left,right]执行一次randPartition函数之后,主元左侧的元素个数就是确定的,且它们都小于主元,假设此时主元是a[p],那么a[p]就是a[left,right]中的...原创 2020-02-17 21:18:23 · 387 阅读 · 0 评论 -
问题 A: 字符串连接
题目描述不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。输入每一行包括两个字符串,长度不超过100。输出可能有多组测试数据,对于每组数据,不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。输出连接后的字符串。样例输入 Copyabc def样例输出 Copyabcdef#include<cstdio>c...原创 2020-02-16 11:32:33 · 253 阅读 · 0 评论 -
C中随机数的生成
首先必须新增几个头文件:#include<cstdlib>、#include<ctime>,然后在main函数开头加一句“srand((unsigned)time(NULL))”,这个语句将生成随机数的种子,然后使用ranf()函数生成随机数。实例如下:#include<cstdio> #include<cstdlib>#include&l...原创 2020-02-15 17:26:59 · 125 阅读 · 0 评论 -
two pointers(双指针)
给定序列{1,2,3,4,5,6}和整数M=8,就存在2+6=8与3+5=8的例子。#include<cstdio>const int maxn = 90;int main(){ int a[6]={1,2,3,4,5,6}; int j=5,m=8,i=0; while(i<j){ if(a[i]+a[j]==8){ printf("%d %d\n",...原创 2020-02-14 10:08:24 · 89 阅读 · 0 评论 -
问题 B: 打印极值点下标
题目描述在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。输入每个案例的输入如下:有2×n+1行输入:第一行是要处理的数组的个数n;对其余2×n行,第一行是此数组的元素个数k(4<k<80),第二行是k个整数,每两个整数之间用空格分隔。输出每个案例输出不多于n行:每行对应于相应数组的所...原创 2020-02-13 16:59:16 · 195 阅读 · 0 评论 -
二分法的应用(快速幂)
对于这个问题使用普通的遍历就有点不合适了,复杂度太高。这里可以使用基于二分思想的快速幂法,也称二分幂。如下:typedef long long LL;//递归的写法LL BINARYPOW(LL a,LL b,LL m){ if(b==0) return 1; //b为奇数,转换为b-1 if(b%2==1) return a*binaryPow(a,b-1,m)%m; else...原创 2020-02-12 16:32:00 · 192 阅读 · 0 评论 -
问题 C: 等腰梯形
题目描述请输入高度h,输入一个高为h,上底边长为h 的等腰梯形(例如h=4,图形如下)。输入输入第一行表示样例数m,接下来m行每行一个整数h,h不超过10。输出对应于m个case输出要求的等腰梯形。样例输入 Copy14样例输出 Copy```cpp#include<cstdio>int main(){ int high,T; char a...原创 2020-02-01 17:57:45 · 224 阅读 · 0 评论 -
问题 A: 输出梯形
题目描述输入一个高度h,输出一个高为h,上底边为h的梯形。输入一个整数h(1<=h<=1000)。输出h所对应的梯形。样例输入 Copy5样例输出 Copy ***** ****************#include<cstdio>#include<cstring>/*int main(){ int high; c...原创 2020-02-01 16:43:56 · 270 阅读 · 0 评论 -
问题 E: 学生查询
题目描述输入n个学生的信息,每行包括学号、姓名、性别和年龄,每一个属性使用空格分开。最后再输入一学号,将该学号对应的学生信息输出。输入测试数据有多组,第一行为样例数m。对于每个样例,第一行为学生人数n(n不超过20),加下来n行每行4个整数分别表示学号、姓名、性别和年龄,最后一行表示查询的学号。输出输出m行,每行表示查询的学生信息,格式参见样例。样例输入 Copy141 李江 男...原创 2020-02-01 13:36:19 · 290 阅读 · 0 评论 -
问题 D: 查找
题目描述输入数组长度 n输入数组 a[1…n]输入查找个数m输入查找数字b[1…m]输出 YES or NO 查找有则YES 否则NO 。输入输入有多组数据。每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m<=n<=100)。输出如果在n个数组中输出YES否则输出NO。样例输入63 2 5 4 7 823 6样例输出...原创 2020-02-01 11:24:15 · 414 阅读 · 0 评论 -
Codeup:查找学生信息
题目描述输入N个学生的信息,然后进行查询。输入输入的第一行为N,即学生的个数(N<=1000)接下来的N行包括N个学生的信息,信息格式如下:01 李江 男 2102 刘唐 男 2303 张军 男 1904 王娜 女 19然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:02030104输出输出M行,每行包括一个对...原创 2020-02-01 09:20:34 · 563 阅读 · 0 评论 -
直接插入排序法
插入排序中的直接插入排序法,对序列A的n个元素A[1]-A[n],令i从2到n枚举,进行n-1趟的操作。假设某一趟时,序列A的前i-1个元素A[1]-A[i-1]已经有序,而范围[i,n]还没有顺序,那么这趟从范围[1,i-1]中寻找某个位置j,使得A[i]插入...原创 2020-01-30 18:23:06 · 243 阅读 · 0 评论 -
C++中的sort方法
排序是可能学习计算机的同学们最常使用的数据结构算法,排序算法有很多,冒泡、简单选择、直接插入、二分、快速排序等等,这些算法是我们必须掌握的算法。当然,C++中也有一个很方便的排序函数,而且他的效率很高,这就是sort()函数。下面我们来介绍该函数:使用sort函数之前必须加上头文件"#include<algorithm>"和"using namespace std",其使用方法为:...原创 2020-01-29 15:42:28 · 98 阅读 · 0 评论