![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Agreenhan
a greenhand keeps rising!
展开
-
剑指 Offer 07. 重建二叉树
剑指offer原创 2022-08-04 10:01:53 · 165 阅读 · 0 评论 -
快速排序思考
晚上刷算法题时的一些感想。原创 2022-08-30 19:46:36 · 159 阅读 · 0 评论 -
排序算法总结
排序的稳定性:假设ki=kjk_i=k_jki=kj,且在排序序列中rir_iri领先于rjr_jrj,如果排序后rir_iri仍领先于rjr_jrj,则排序方法是稳定的,否则,排序是不稳定的。1.冒泡排序法版本一#include<iostream>#include<vector>using namespace std;int main(){ int n; cin >> n; vector<int> v(n); for (i原创 2022-03-14 19:37:25 · 1779 阅读 · 0 评论 -
最小值-2019
题目描述给定区间[l,r]要求选出2个数i ,j满足l <= i < j <= r并且 (i * j) mod 2019 最小并求出这个最小值1 <= l < r <= 2e9输入格式l r输出格式最小值输入样例2020 2040输出样例2#include<iostream>#include<vector>using namespace std;int main(){ long long l, r; cin原创 2022-02-21 12:36:02 · 533 阅读 · 0 评论 -
递归算法求x的n次幂
题目描述用递归算法求xn。输入格式一行,两个整数x和n。输出格式一行,一个整数xn输入样例5 6输出样例15625#include<iostream>using namespace std;int x, n;long power(int x, int exp){ if (exp == 1) return x; if (exp % 2 == 0) { long temp= power(x, exp / 2); return temp * temp;原创 2022-02-14 20:05:04 · 2356 阅读 · 0 评论 -
字谜 大小写重复全排列问题
题目描述写程序从一组给定的字母中生成所有可能的单词。例如,给定单词“abe",应该输出单词 “abc”, “acb”, “bac”, “bca”, “cab” 和 “cba”。在输入的单词中,某些字母可能会出现多次。对于给定的单词,程序不应多次生成同一个单词,并且这些单词应按字母升序输出输入格式输入由几个单词组成。第1行包含一个数字,表示单词数。以下每行各包含一个单词。单词由a到z的大小写字母组成。大小写字母应被视为不同。每个单词的长度都小于13。输出格式对于输入中的每个单词,输出应该包含所有可以原创 2022-02-12 20:12:39 · 144 阅读 · 0 评论 -
订单管理 重复全排列
题目描述商店经理按货物标签的字母顺序对各种货物进行分类,将所有拥有以同一个字母开头的标签的货物都储存在同一个仓库中,并用该字母标记。经理收到并登记从商店发出的货物订单,每个订单需要一种货物。商店经理按照预定的顺序处理请求。请计算经理访问仓库的所有可能方式,以便在一天中一个接一个的解决所有需求。输入格式输入包含一行,其中包含所需货物的所有标签(随机排列)。对每种货物都用标签的起始字母表示,只用英文字母表中的小写字母。订单数量不超过200个。输出格式输出将包含商店经理可以访问其仓库所有可能的订单。原创 2022-02-12 19:01:25 · 576 阅读 · 0 评论 -
24点游戏
题目描述给出4个正整数操作数,你的任务是使用运算符(+,-,*,/)和括号对操作数进行计算,分析是否能得到24,每个操作数只能使用1次,运算符和括号可以多次使用,注意所有的中间结果都必须是整数。输入格式输入包括多行,每行4个正整数,范围是[1,13],输入以0 0 0 0标记结束输出格式若输入的4个操作数能计算出24,输出Yes,否则输出No输入样例1 1 1 12 5 7 80 0 0 0输出样例NoYes#include<iostream>using namesp原创 2022-02-12 16:38:46 · 2608 阅读 · 0 评论 -
进阶1.1.3 食物链
题目描述动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同类。 第二种说法是"2 X Y",表示X吃Y。 此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。 1) 当前的话与前原创 2022-02-09 17:55:39 · 3029 阅读 · 0 评论 -
问题 A: 蛇形填数
题目描述在nn的方阵里填入1,2,3,···,nn,要求填成蛇形。例如n=4时方阵为:10 11 12 19 16 13 28 15 14 37 6 5 4上述的方阵中,多余的空格只是为了便于观察规律,不必严格输出。n<=8. 具体格式看下面的样例输出。输入格式一行,一个整数n(n<=8)输出格式在nn的方阵里填入1,2,3,···,nn.要求填成蛇形.每个数字之间用空格隔开。输入样例4输出样例10 11 12 19 16 13 28 15原创 2022-02-07 18:39:20 · 674 阅读 · 0 评论 -
抓住那头牛
题目描述约翰希望立即抓住逃亡的牛。当前约翰在节点N,牛在节点K(0<=N,K<=100000)时,他们在同一条线上。约翰有两种交通方式:步行和乘车。如果牛不知道有人在追赶自己,原地不动,那么约翰需要多长时间才能抓住牛?步行:约翰可以在一分钟内从任意节点X移动到接节点X-1或X+1。乘车:约翰可以在一分钟内从任意节点X移动到节点2*X。输入格式两个整数N和K。输出格式单行输出约翰抓住牛的所需的最短时间(以分钟为单位)输入样例5 17输出样例4数据范围与提示在输入样例中抓住原创 2022-02-07 12:32:38 · 652 阅读 · 0 评论 -
问题 F: 逆波兰表示式
题目描述逆波兰表示式是一种将运算符写在操作数后面的描述算式的方法。举个例子,我们平时常用的中缀表示法描述的算式(1+2)(5+4),改为逆波兰表示式之后为:1 2 + 5 4 + * 。相较于中缀表示法,逆波兰表示法的优势在于不需要括号。请编写程序输出以逆波兰表示法输入的算式的计算结果。输入格式输入包括一行,包括1个算式。相邻的数字或运算符用1个空格隔开。算式中的操作数和运算符总数均小于100,运算符包括±,操作数和计算过程中所有值绝对值均小于10的9次方。输出格式输出结果后换行。如果算式非法,原创 2022-01-24 18:25:55 · 280 阅读 · 0 评论 -
寻找第K大的数
题目描述要求在N个不重复的整数中,找出第K大的整数 ,其中0<K<N<1000000输入格式输入第一行为两个正整数N K第二行为N个整数,输入保证这N个整数两两相异,每个整数的范围在-1000000到1000000之间输出格式输出第K大的整数值输入样例5 33 2 4 5 1输出样例3思路: 快速排序的变形#include<iostream>#include<vector>using namespace std;vector&l原创 2022-01-19 11:54:37 · 423 阅读 · 0 评论 -
问题 E: 括号匹配
题目描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来。如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的输入格式第一行输入一个正整数N,表示测试数据组数(N<=10)每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超过100输出格式对于每组测试数据都输出一个正整数,表示最少需要添加的括号的数量。每组测试输出占一行输入样例4[]([])[]((](原创 2022-01-18 10:33:32 · 515 阅读 · 0 评论 -
大整数加法
题目描述计算两个大整数的和。大整数是指超过了c,c++表示范围的整数,如1234567890000000000000000000输入格式输入包括两个大整数,每个大整数不超过100位,用空格或者换行隔开输出格式输出两个大整数的和输入样例222222222222222222222333333333333333333333输出样例555555555555555555555#include<iostream>using namespace std;int main(){ s原创 2022-01-18 09:37:21 · 274 阅读 · 0 评论 -
问题 M: 进阶1.1.1 畅通工程
题目描述某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?输入格式测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。为简单起见,城镇从1到N编号。注意:两个城市之间可以有多转载 2022-01-17 19:34:27 · 59 阅读 · 0 评论 -
用c++实现多项式的加法(运用单向链表)
用c++实现多项式的乘法(运用单向链表)(可能是很愚蠢的做法,毕竟鄙人水平有限,哈哈哈哈~)(感兴趣就继续往下看叭 ==)题目:一个一元多项式可以看作由若干个一元单项式按降幂排列成的线性表。请编写程序对输入的两个一元多项式求和,并输出求和的结果。输入为两个一元多项式,每个一元多项式输入一行,按照降幂依次输入每个单项式的系数和指数,并以**-1 -1**作为结束。系数和指数均为整数,指数不小于0。输出为求和结果多项式,按照降幂依次输出每个单项的系数和指数,每个数值后面用一个空格隔开,输出结果多项式后换行原创 2020-12-14 21:22:54 · 3423 阅读 · 3 评论 -
C++栈的操作问题(简单题)
引子:马上数据结构要考试了,考前刷刷学校里OJ的题,碰见一个看似简单实则对于我这种新手来说有些困难的题目,打算写个文章纪念一下>_<~开始正题:**题目题目描述:假设入栈序列为1 2 3 4 … n,则出栈序列是1到n的一个排列。 假设用P表示入栈操作,用Q表示出栈操作,则栈操作过程可以表示为一个由P和Q构成的序列。 对一个给定的出栈序列,应该如何操作才能得到呢?输入:输入由若干行构成,每一行是一组由空格间隔开的整数,第一个整数是序列的长度n(n不大于1000),后面是一个1到n的原创 2020-12-17 09:26:18 · 1180 阅读 · 1 评论 -
平衡二叉树
#mermaid-svg-ZeTyC5BaWZJOqwuJ .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-ZeTyC5BaWZJOqwuJ .label text{fill:#333}#mermaid-svg-ZeTyC5BaWZJOqwuJ .node rect,#mermaid-svg-ZeTyC5BaWZ原创 2021-08-15 14:36:12 · 706 阅读 · 0 评论