![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Data Structure
-
代码敲上天.
流水不争先,争一个滔滔不绝
展开
-
A - 数据结构实验之串一:KMP简单应用
Description给定两个字符串string1和string2,判断string2是否为string1的子串。Input输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现空格。Output对于每组输入数据,若string2是string1的子串,则输出string2在string1中的位置,若不是,输出-1。SampleInput...原创 2022-06-08 20:21:09 · 75 阅读 · 0 评论 -
关于校园招聘的问题
是一种特殊的外部招聘途径。是指招聘组织(企业等)直接从学校招聘各类各层次应届毕业生,也指招聘组织(企业等)通过各种方式招聘各类各层次应届毕业生。常见载体校园招聘包括高校、中等专业学校举办的招聘活动,专业人才招聘机构、人才交流机构或政府举办的毕业生招聘活动,招聘组织(主要是大型企业)举办应届毕业生招聘活动,企业委托高校或中等专业学校培养,邀请学生到企业实习并选拔留用,企业在学校设立奖学金并在享受者中选拔录用和校园招聘专业网站。校招程序1、调查分析,确定目标学校。如,各校专业设置、学生特点等。2、前期原创 2021-05-15 17:02:23 · 1088 阅读 · 0 评论 -
英语学习网站推荐
1.BBC英伦网—英语教学—媒体英语:关于媒体英语的一系列视听说拓展训练,以英式英语发音的听说为训练重点http://www.bbc.co.uk/ukchina/simp/topics/elt_media_english/index.shtml?2 . 沪江部落网站—BBC媒体英语:一档BBC英语听力教学节目,以BBC撰稿人报道的世界大事为听力素材,同时带大家一起学习报道中常用的单词和短语。http://bulo.hujiang.com/menu/7674/3 . 喜马拉雅网—媒体英语专辑:覆原创 2021-06-16 16:59:14 · 674 阅读 · 0 评论 -
刷题网站集合
1、leetcode英文网址:https://leetcode.com/中文网址:https://leetcode-cn.com/估计 leetcode(力扣)大家都很熟悉了,都被推荐烂了,很多国内外的程序员在上面刷题,难度从 Easy、Medium 至 Hard 都有,据说很多面试官都会从中挑选各种题目,号称大厂的筛码工。我很早就知道 leetcode,但是直到准备复试闲来无事的时候才在它上面刷了点儿题找感觉,发现上面的题型覆盖很广,像线段树、滑动数组、博弈论、扫描线等都应有具有,但是好像有的测试转载 2021-05-31 16:59:21 · 4102 阅读 · 0 评论 -
OJ和PTA常见的错误代码含义
1.Waiting WT 用户程序正在排队等待测试2.Accepted AC 用户程序输出正确的结果3.Presentation Error (PE) : 虽然您的程序貌似输出了正确的结果,但是这个结果的格式有点问题。请检查程序的输出是否多了或者少了空格(’ ‘)、制表符(’\t’)或者换行符(’\n’)。4.Time Limit Exceeded TLE 用户程序运行时间超过题目的限制5.Runtime Error (RE) : 运行时错误,这个一般是程序在运行期间执行了非法的操作造成的。可能是下原创 2021-05-21 20:03:45 · 1972 阅读 · 0 评论 -
数据结构时间复杂度T(n)=O(f(n))的含义
1.首先要明白数量级的表示符号O()和o()分别代表 同阶和高阶例:如果a,b都是无穷小.高阶:如果lim(n->0)b/a的极限等于0,就说b是比a高阶的无穷小,记作b=o(a).同阶:如果lim(n->0)b/a的极限等于c(c≠0),就说b与a是同阶无穷小,记作b=O(a)2.T(n)=O(f(n))相当于lim(n->∞) T(n)/f(n)=k 即极限是一个同阶的常数,可能为等价也可能不等价...原创 2022-04-02 09:09:18 · 1529 阅读 · 0 评论 -
快速排序-超级详细代码注释!
Description给定N(N≤10^5)个整数,要求用快速排序对数据进行升序排列,注意不得使用STL。Input输入数据第一行给出正整数N(≤10^5),随后给出N个整数,数字间以空格分隔。Output输出排序后的结果,数字间以一个空格间隔,行末不得有多余空格。SampleInput 849 38 65 97 76 13 27 49Output 13 27 38 49 49 65 76 97#include <iostream>#include <cstr原创 2021-05-08 12:18:26 · 236 阅读 · 0 评论 -
J - 商人的诀窍
DescriptionE_star和von是中国赫赫有名的两位商人,俗话说的好无商不奸,最近E_star需要进一批苹果。可是他需要的苹果只有von才有,von的苹果都存在他的传说中很牛叉的仓库里,每个仓库都存了不同种类的苹果,而且每个仓库里的苹果的价钱不同。如果E_star想要买仓库i里的所有重量为f[i]的苹果他必须付m[i]的金钱。E_star开着他的传说中的毛驴车去拉苹果,而且他只带了N些金钱。E_star作为传说中的奸商希望用它所带的N金钱得到重量最多的苹果。你作为他最好的朋友,所以他向你求出帮助原创 2021-05-09 21:49:04 · 138 阅读 · 2 评论 -
A - 删数问题
Description键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。Input输入两个数字,分别为原始数n,要去掉的数字数s (s < n)。Output输出去掉s个数后最小的数SampleInput 178543 4Output 13#include<cstdio>#include<cstring>char a[1原创 2021-05-09 10:59:46 · 102 阅读 · 0 评论 -
D - 区间覆盖问题
Description用i来表示x坐标轴上坐标为[i-1,i]的长度为1的区间,并给出n(1≤n≤200)个不同的整数,表示n个这样的区间。现在要求画m条线段覆盖住所有的区间,条件是:每条线段可以任意长,但是要求所画线段的长度之和最小,并且线段的数目不超过m(1≤m≤50)。Input输入包括多组数据,每组数据的第一行表示区间个数n和所需线段数m,第二行表示n个点的坐标。Output每组输出占一行,输出m条线段的最小长度和。SampleInput 5 31 3 8 5 11Out原创 2021-05-09 14:29:07 · 533 阅读 · 0 评论 -
I - 商人小鑫
Description小鑫是个商人,当然商人最希望的就是多赚钱,小鑫也一样。这天,他来到了一个遥远的国度。那里有着n件商品,对于第i件商品需要付出ci的价钱才能得到。当然,对于第i件商品,小鑫在自己心中有一个估价pi:代表着当他买下这件商品后带回他的国家可以卖出的价格。小鑫只能带回m件商品,你能帮他计算一下他最多能赚多少钱么?Input第一行是n,m。( 0< m ≤ n ≤ 1000000 )紧接着有n行,每一行有两个数 c ,p。第i行代表着ci,pi。( ci ≤ pi, 保证数据都在原创 2021-05-09 20:51:55 · 132 阅读 · 0 评论 -
A-鸽子哲学
核心:1.输出的时候,可以输入一行数据,紧接着输出一行,不一定用二维数组,一维数组一样可以实现,而且更优2.注意看题,是什么意思,特别是那句名言,意味着所有为1的时候,输出是为0的这两点纠结好久才解决。Description当所有人认为我会鸽的时候我鸽了,亦是一种不鸽。——《鸽式哲学》鸽德Input第一行一个数字 n,代表总鸽子数。(n<=10000)接下来 n 行每行 n 个数;第 i 行第 i 个数为 1 代表第 i 个人鸽了,反之为 0。第 i 行第 j 个数为 1 代表原创 2021-05-11 00:02:23 · 570 阅读 · 0 评论 -
B - 数字三角形问题
关键:动态规划问题——三角形左倾,一个二维数组输入,一个二维数组记录Description给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。对于给定的由n行数字组成的数字三角形,计算从三角形的顶至底的路径经过的数字和的最大值。Input输入数据的第1行是数字三角形的行数n,1≤n≤100。接下来n行是数字三角形各行中的数字。所有数字在0…99之间。Output输出数据只有一个整数,表示计算出的最大值。SampleI原创 2021-05-11 17:20:47 · 279 阅读 · 0 评论 -
斐波那契数列的四种实现方式(C语言)
斐波那契数列是一组第一位和第二位为1,从第三位开始,后一位是前两位和的一组递增数列,像这样的:1、1、2、3、5、8、13、21、34、55…今天,我们用四种方式来进行实现:1.递归int Fibon1(int n){if (n == 1 || n == 2){return 1;}else{return Fibon1(n - 1) + Fibon1(n - 2);}}int main(){int n = 0;int ret = 0;scanf("%d", &n)转载 2021-05-10 16:24:17 · 401 阅读 · 0 评论 -
D - 最长公共子序列问题-详细过程
题目Description给定两个序列 X={x1,x2,…,xm} 和 Y={y1,y2,…,yn},找出X和Y的最长公共子序列。Input输入数据有多组,每组有两行 ,每行为一个长度不超过500的字符串(输入全是大写英文字母(A,Z)),表示序列X和Y。Output每组输出一行,表示所求得的最长公共子序列的长度,若不存在公共子序列,则输出0。SampleInput ABCBDABBDCABAOutput 4答案#include<bits/stdc++.h>#原创 2021-05-13 00:40:09 · 761 阅读 · 2 评论 -
I - 免费馅饼-图画详细解析
Description都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在移动不超过一米的范围内接住坠落的馅饼。现在给这条小径如图标上坐标:为了原创 2021-05-13 19:49:25 · 147 阅读 · 0 评论 -
F - 上升子序列-超详细注释版
Description一个只包含非负整数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列{a1, a2, …,aN},我们可以得到一些上升的子序列{ai1, ai2, …, aiK},这里1 ≤ i1 < i2 <…< iK ≤ N。例如:对于序列{1, 7, 3, 5, 9, 4, 8},有它的一些上升子序列,如{1, 7}, {3, 4, 8}等等。这些子序列中序列和最大的是子序列{1, 3, 5, 9},它的所有元素原创 2021-05-16 09:25:10 · 126 阅读 · 0 评论 -
E - 最长上升子序列
Description一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN),我们可以得到一些上升的子序列(ai1, ai2, …, aiK),这里1<= i1 < i2 < … < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8)原创 2021-05-13 16:43:17 · 124 阅读 · 0 评论 -
A - 顺序表应用1:多余元素删除之移位算法
Description一个长度不超过10000数据的顺序表,可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的元素在表中只保留第一个)。要求:1、必须先定义线性表的结构与操作函数,在主函数中借助该定义与操作函数调用实现问题功能;2、本题的目标是熟悉顺序表的移位算法,因此题目必须要用元素的移位实现删除;Input第一行输入整数n,代表下面有n行输入;之后输入n行,每原创 2021-05-17 16:08:28 · 110 阅读 · 0 评论 -
K - 移动小球
Description给你n个小球,从左到右编号依次为1,2,3,4,5,6…n排成一行。现在有以下2种操作:A x y表示把编号为x小球移动到编号为y的小球的左边(和y相邻)。Q x为询问编号为x的小球左边的球号,如果x左边没有小球的话输出"cyk666"。Input第一行输入一个T,表示有T组测试数据。(1<=T<=100)随后每一组测试数据第一行是两个整数N,M,其中N表示球的个数(1 随后有M行询问,第一个字符是操作类型s。当s为’A’时,输入x,y表示把编号为x小球移动到编号原创 2021-05-21 11:49:03 · 103 阅读 · 0 评论 -
C - 师--链表的结点插入
Description给出一个只有头指针的链表和 n 次操作,每次操作为在链表的第 m 个元素后面插入一个新元素x。若m 大于链表的元素总数则将x放在链表的最后。Input多组输入。每组数据首先输入一个整数n(n∈[1,100]),代表有n次操作。接下来的n行,每行有两个整数Mi(Mi∈[0,10000]),Xi。Output对于每组数据。从前到后输出链表的所有元素,两个元素之间用空格隔开。SampleInput 41 11 20 3100 4Output 3 1 2 4原创 2021-05-15 15:27:42 · 214 阅读 · 0 评论 -
F - 数据结构实验之栈与队列六:下一较大值(二)
理解:这道题目还是很不错的,一般来说,这道题用链表或者数组都是可以做的,分析发现n已经到达1e5,所以用双重循环不合适,用栈优化,原来每次都是从前往后判断,第2个数要和后面所有的比较,现在直接从后往前,倒数第二个数,只要和最后一个比较就行,省去不少时间。Description对于包含n(1<=n<=100000)个整数的序列,对于序列中的每一元素,在序列中查找其位置之后第一个大于它的值,如果找到,输出所找到的值,否则,输出-1。Input输入有多组,第一行输入t(1<=t<=原创 2021-05-27 15:50:03 · 56 阅读 · 0 评论 -
A - 数据结构实验之栈与队列一:进制转换
掌握如何入栈和出栈10进制转化为任何进制,循环两个操作,第一取余,第二除以进制数,把取余的数保存下来,倒着输出就ok。Description输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出。Input第一行输入需要转换的十进制非负整数;第二行输入 R。Output输出转换所得的 R 进制数。SampleInput 12798Output 2377#include <iostream>#include <原创 2021-05-26 16:43:46 · 319 阅读 · 0 评论 -
B - 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
**理解:**分成4种情况这里不介绍,这里讲本质。后缀表达式的运算符优先级,是把前缀的运算符排列出一个优先级,然后从最优先输出的,不一定连续输出。而4种情况就是对优先级的处理。Description对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之。Input输入一个算术表达式,以‘#’字符作为结束标志。Output输出该表达式转换所得到的后缀式。SampleInput a*b+(c-d/e)*f#Output ab*cde/-f*+#include <ios原创 2021-05-26 18:30:06 · 118 阅读 · 0 评论 -
详解+G - 数据结构实验之栈与队列七:出栈序列判定
理解:出入栈规律之一,如果前面有一个比较大的数,后面有连续的递增顺序,递增顺序>=2个小于前面比较大的数,那么此出栈顺序不可能实现。比如4,1,2,3,5。这道题思路是输入一个数,然后不断按照顺序模拟入栈,从a->stack数组,过程中发现相等的,则出栈,那么下一个出栈的可能是现在出栈数的前一个,也可能是在现在出栈数的后面,出栈完毕,栈顶元素不等于下一个出栈数,则入栈之后再此判断。Description给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈原创 2021-05-28 19:49:21 · 116 阅读 · 0 评论 -
C - 数据结构实验之栈与队列三:后缀式求值
Description对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。Input输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。Output求该后缀式所对应的算术表达式的值,并输出之。SampleInput59*684/-3*+#Output 57Hint基本操作数都是一位正整数!#include <iostream>#include <cstring>#include <algorithm&g原创 2021-05-26 19:56:45 · 75 阅读 · 0 评论 -
A - 递归的函数
关键:增加一个数组,一个判断作为递归前的判断条件。Description给定一个函数 f(a, b, c):如果 a ≤ 0 或 b ≤ 0 或 c ≤ 0 返回值为 1;如果 a > 20 或 b > 20 或 c > 20 返回值为 f(20, 20, 20);如果 a < b 并且 b < c 返回 f(a, b, c−1) + f(a, b−1, c−1) − f(a, b−1, c);其它情况返回 f(a−1, b, c) + f(a−1, b−1, c)原创 2021-05-12 13:35:02 · 118 阅读 · 0 评论 -
递归和递推的区别
递推:从初值出发反复进行某一运算得到所需结果。-----从已知到未知,从小到达(比如每年长高9cm,20年180,30后270)递归:从所需结果出发不断回溯前一运算直到回到初值再递推得到所需结果----从未知到已知,从大到小,再从小到大。递归(Recursion)是从归纳法(Induction)衍生出来的。一个运算(操作),可以通过不断调用本身的运算形式,往往需要通过前一次的结果来得到当前运算的结果,因而,程序运行时,总是先一次次地「回溯」前一次的结果(回溯过程中这些结果是未知的,直到回溯到初值令回溯终止原创 2021-05-31 17:22:05 · 1424 阅读 · 0 评论 -
递归详细过程
前言:讲述递归之前,我们先来了解一下函数嵌套,什么叫做函数嵌套,函数嵌套就是主函数调用一个函数,函数中又调用了函数,不断调用,如下图所示1.什么是递归?递归(recursive)函数是“自己调用自己”的函数,主函数调用一个函数,这个函数内部又在此调用这个函数,一直调用自己,调用的条件逐渐逼向边界,最后从边界开始返回,即可以说是“后调用的先返回”。2.举个不断递归过程化的例子:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给原创 2021-06-01 23:08:45 · 4080 阅读 · 1 评论 -
J - 马拦过河卒
关键:处理行列,如何推出递推关系式Description棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A点(0,0)、B点(n,m)(n,m为不超过15的整数),同样马的位置坐标是需要给出的。现在要求你计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。Input一行四个数据,用空格分隔,分别表示B点的坐标原创 2021-05-15 16:55:50 · 84 阅读 · 0 评论 -
sort()函数与升序、降序
三个参数:例如:int a[]={4,7,3,2}; sort(a,a+4);(1)第一个参数first:是要排序的数组的起始地址。(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)(3)第三个参数comp是排序的方法:可以是从升序也可是降序。如果第三个参数不写,则默认的排序方法是从小到大排序。...原创 2021-05-09 13:29:07 · 8037 阅读 · 1 评论 -
二叉树的先序、中序、后序遍历超详解
以上图为基础①前序遍历的方式是:首先访问根节点,然后访问左子树,最后访问右子树。前序遍历序列:F C A D B E H G M②中序遍历的方式是:首先访问左子树,接着访问根结点,最后访问右子树。中序遍历序列:A C B D F H E M G③后序遍历的方式是:首先访问左子树,接着访问右子树,最后访问根结点。后序遍历序列:A B D C H M G E F④相同的特点:左子树总是在右子树的之前遍历。遍历都可以用递归的方式来描述。中序遍历的序列中任取一个结点,该结点的左子树右子树一定分.原创 2021-05-31 18:22:20 · 99182 阅读 · 4 评论