C语言
code monkey
这个作者很懒,什么都没留下…
展开
-
查找练习 hash——出现过的数字
查找练习 hash——出现过的数字 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 有一个数据字典,里面存有n个数字(n Input 输入数据只有一组! 第一行包含两个整数n m,分别代表字典中数字的个数和要查询的数字的个数。 接着n行代表字典中的n个数字。 最后m表示要查询的原创 2017-03-15 11:05:27 · 207 阅读 · 0 评论 -
数据结构实验之栈六:下一较大值(二)
Problem Description对于包含n(1<=n<=100000)个整数的序列,对于序列中的每一元素,在序列中查找其位置之后第一个大于它的值,如果找到,输出所找到的值,否则,输出-1。 Input输入有多组,第一行输入t(1<=t<=10),表示输入的组数; 以后是 t 组输入:每组先输入n,表示本组序列的元素个数,之后依次输入本组的n个元素。 Output输出有多组,每组之间输出一原创 2017-02-14 21:14:08 · 157 阅读 · 0 评论 -
数据结构实验之栈:行编辑器
Problem Description 一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用户的数据区。 由于用户在终端上进行输入时,不能保证不出差错,因此,若在编辑程序中,“每接受一个字符即存入用户数据区”的做法显然不是最恰当的。较好的做法是,设立一个输入缓冲区,用以接受用户输入的一行字符,然后逐行存入用户数据区。允许用户输入出差错,并在发现有误时可以及时更正原创 2017-02-14 19:55:28 · 237 阅读 · 0 评论 -
数据结构实验之串一:KMP简单应用
Problem Description给定两个字符串string1和string2,判断string2是否为string1的子串。 Input输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现空格。 Output对于每组输入数据,若string2是string1原创 2017-02-14 15:59:48 · 235 阅读 · 0 评论 -
字符串匹配的KMP算法
点击打开链接←这是原文地址 字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太转载 2017-02-14 14:40:58 · 144 阅读 · 0 评论 -
找朋友(bfs)
Problem DescriptionX,作为户外运动的忠实爱好者,总是不想呆在家里。现在,他想把死宅Y从家里拉出来。问从X的家到Y的家的最短时间是多少。 为了简化问题,我们把地图抽象为n*m的矩阵,行编号从上到下为1 到 n,列编号从左到右为1 到 m。矩阵中’X’表示X所在的初始坐标,’Y’表示Y的位置 , ’#’表示当前位置不能走,’ * ’表示当前位置可以通行。X每次只能向上下左右的相邻的原创 2017-02-22 20:32:48 · 187 阅读 · 0 评论 -
数据结构实验之栈八:栈的基本操作
Problem Description堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。 Input首先输入整数t(1 <= t <= 10),代表测试的组数,以后是 t 组输入。 对于每组测试数据,第一行输入两个正整数 m(1 <= m <= 100)、n(1 <= n <=原创 2017-02-14 11:16:08 · 272 阅读 · 0 评论 -
图结构练习——BFS——从起始点到目标点的最短步数
Problem Description在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口,编号为1..n,某些隘口之间是有通道连接的。其中近卫军团在1号隘口,天灾军团在n号隘口。某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河。但是巫妖王不想付出不必要的代价,他想知道在不修建任何通道的前提下,部队是否可以通过隘口及其相关通道原创 2017-02-22 14:43:58 · 447 阅读 · 0 评论 -
数据结构实验之栈一:进制转换
Problem Description输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出。 Input第一行输入需要转换的十进制非负整数; 第二行输入 R。 Output输出转换所得的 R 进制数。 Example Input1279 8 Example Output2377 HintAuthor#include <stdio.h> int mai原创 2017-02-13 19:54:36 · 469 阅读 · 0 评论 -
汤圆の拯救计划
Problem Description 又到了汤圆星球一年一度的汤圆节了,但是大魔王却过来把汤圆公主抓走了Σ( ° △ °|||)︴ 身为汤圆骑士的QAQ蒟蒻自然而然的肩负着拯救汤圆的使命 QAQ蒟蒻经历了千辛万苦(并没有)之后,来到了大魔王的城堡,根据情报,汤圆公主就被大魔王放在城堡内,然后QAQ蒟蒻发现自己是一个路 痴,所幸的是他拿到了大魔王的城堡的地图,而且在这上原创 2017-02-23 17:17:05 · 690 阅读 · 0 评论 -
数据结构实验之二叉树二:遍历二叉树
数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。 Input连续输入多组数据,每组数据输入一个长度小于50个原创 2017-02-15 11:01:59 · 243 阅读 · 0 评论 -
猴子分桃(stud ACM题目)
Problem Description 老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。 第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。 第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。 后来的小猴子都如此原创 2017-03-12 16:19:33 · 733 阅读 · 0 评论 -
树的高度和深度的区别
对于树的基本概念上理解,对于才接触数据结构的人来说,树的高度和深度是一个容易混淆的知识点,现解释如下: 1.高度 对于高度的理解,我们不管他数据结构什么什么知识,就拿楼房来说,假如一个人提问:楼房的高度有好高?我们会下意识的从底层开始往上数,假如楼有6层,则我们会说,这个楼有6层楼那么高,则提问者就会大概知道楼有多高了。所以高度就是以从下往上对比,这是我们的习惯。而在树中,树的高度也是从下转载 2017-02-16 10:39:37 · 1320 阅读 · 0 评论 -
数据结构实验之二叉树三:统计叶子数
Problem Description已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并求二叉树的叶子结点个数。 Input连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。 Output输出二叉树的叶子结点个数。 Example Inputabc,,de,g,,f,,, Example Output3 HintAu原创 2017-02-16 10:29:43 · 221 阅读 · 0 评论 -
求二叉树的层次遍历
求二叉树的层次遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description已知一颗二叉树的前序遍历和中序遍历,求二叉树的层次遍历。 Input输入数据有多组,输入T,代表有T组测试数据。每组数据有两个长度小于50的字符串,第一个字符串为前序遍历,第二个为中序遍历。 Output每组输出这颗二原创 2017-02-16 09:22:48 · 238 阅读 · 0 评论 -
求二叉树的先序遍历
Problem Description已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历 Input输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的中序遍历序列,第二个字符串表示二叉树的后序遍历序列。 Output输出二叉树的先序遍历序列 Example Input2 dbgeafc dgebfca原创 2017-02-15 20:47:35 · 267 阅读 · 0 评论 -
数据结构上机测试4.1:二叉树的遍历与应用1
数据结构上机测试4.1:二叉树的遍历与应用1 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。 Input第一行输入二叉树的先序遍历序列; 第二行输入二叉树的中序遍历序列。 Output输出该二叉树的后序遍历序列。原创 2017-02-15 20:23:12 · 244 阅读 · 0 评论 -
数据结构实验之二叉树五:层序遍历
数据结构实验之二叉树五:层序遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立二叉树并求二叉树的层次遍历序列。 Input输入数据有多行,第一行是一个整数t (t<1000),代表有t行测试数据原创 2017-02-15 15:29:03 · 242 阅读 · 0 评论 -
广度优先搜索练习之神奇的电梯
Problem Description有一座已知层数为n的高楼,这座高楼的特殊之处在于只能靠电梯去上下楼,所以要去到某一层要非常耽误时间,然而更悲哀的是,这座高楼的电梯是限号的,小鑫最开始的时候在1层,他想去第x层,问题是他最起码要经过多少层(包含第x层)才能到达第x层。 Input多组输入。 第一行是三个正整数n,m,q。分别代表楼的总层数,给定的m条信息和q次查询。 接下来的m行,每行的第原创 2017-02-24 08:10:39 · 278 阅读 · 0 评论 -
数据结构实验之栈四:括号匹配
Problem Description给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。 Input输入数据有多组,处理到文件结束。 Output如果匹配就输出“yes”,不匹配输出“no” Example Inputsin(20+10) {[}] Example Outputyes no HintA原创 2017-02-13 18:56:23 · 252 阅读 · 0 评论 -
图结构练习——BFSDFS——判断可达性
Problem Description在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口,编号为1..n,某些隘口之间是有通道连接的。其中近卫军团在1号隘口,天灾军团在n号隘口。某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河。但是巫妖王不想付出不必要的代价,他想知道在不修建任何通道的前提下,部队是否可以通过隘口及其相关通道原创 2017-02-21 20:22:52 · 384 阅读 · 0 评论 -
数据结构-堆
原文链接 点击打开链接 什么是堆 堆是一种特殊的二叉完全树。堆的一个主要特点是它以一定的偏序(a partial order)来保存所有节点[译者注:此处的偏序是指不完全的排序,堆只需要满足父节点大于两个子节点,而子节点之间没有要求]。作为一颗完全树,一层中的节点是从左到右填满的。如果一个节点没有左儿子,那么它一定没有右儿子。并且在第h层中如果存在节点,那么第h-1层必须转载 2017-02-17 20:30:58 · 318 阅读 · 0 评论 -
哈弗曼树
本文转载自他人 原文链接 一、哈夫曼树的概念和定义 什么是哈夫曼树? 让我们先举一个例子。 判定树: 在很多问题的处理过程中,需要进行大量的条件判断,这些判断结构的设计直接影响着程序的执行效率。例如,编制一个程序,将百分制转换成五个等级输出。大家可能认为这个程序很简单,并且很快就可以用下列形式编写出来: [转载 2017-02-17 10:32:15 · 328 阅读 · 0 评论 -
数据结构实验之查找一:二叉排序树
Problem Description对应给定的一个序列可以唯一确定一棵二叉排序树。然而,一棵给定的二叉排序树却可以由多种不同的序列得到。例如分别按照序列{3,1,4}和{3,4,1}插入初始为空的二叉排序树,都得到一样的结果。你的任务书对于输入的各种序列,判断它们是否能生成一样的二叉排序树。 Input输入包含若干组测试数据。每组数据的第1行给出两个正整数N (n < = 10)和L,分别是输入原创 2017-02-17 09:03:28 · 204 阅读 · 0 评论 -
迷失の搜索树
Problem Description小璐在机缘巧合之下获得了一个二叉搜索树,这个二叉搜索树恰好有n个节点,每个节点有一个权值,每个节点的权值都在[1,n]这个区间内,并且两两不相同,真是优美的性质啊 但是命运的不公又让她失去了这个二叉搜索树 幸运的是,她还记得自己丢失的二叉搜索树的前序遍历序列。 在丢了二叉搜索树之后,小璐无比想念她的这个树的后序遍历 那么问题来了,聪明的你在知道这个二叉搜原创 2017-02-16 21:11:26 · 205 阅读 · 0 评论 -
二叉排序树
Problem Description二叉排序树的定义是:或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 今天我们要判断两序列是否为同一二叉排序树 Input开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束原创 2017-02-16 20:52:52 · 213 阅读 · 0 评论 -
树结构练习——排序二叉树的中序遍历
Problem Description在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3).任意一个节点的右子树(如果存在的话)的关键值大于该节点的关键值。现给定一组数据,请你对这组数据按给定顺序建立一棵排序二叉树,并输出其中序遍历的结果。Input输入包含多组数据,每组数据原创 2017-02-16 19:56:17 · 267 阅读 · 0 评论 -
数据结构实验之二叉树的建立与遍历
Problem Description 已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。 Input输入一个长度小于50个字符的字符串。 Output输出共有4行: 第1行输出中序遍历序列; 第2行输出后序遍历序列; 第3行输出叶子节点个数; 第4行输出二叉树深度。原创 2017-02-16 16:59:26 · 318 阅读 · 0 评论 -
数据结构实验之二叉树七:叶子问题
Problem Description已知一个按先序输入的字符序列,如abd,,eg,,,cf,,,(其中,表示空结点)。请建立该二叉树并按从上到下从左到右的顺序输出该二叉树的所有叶子结点。 Input输入数据有多行,每一行是一个长度小于50个字符的字符串。 Output按从上到下从左到右的顺序输出二叉树的叶子结点。 Example Inputabd,,eg,,,cf,,, xnl,,i,,原创 2017-02-16 15:33:46 · 228 阅读 · 0 评论 -
背包问题
01背包:(每样东西只有一件) for i=1..N for v=V..0 f[v]=max{f[v],f[v-c[i]]+w[i]}; 完全背包:(每样东西有无数件) for i=1..N for v=0..V f[v]=max{f[v],f[v-cost]+weight} 多重背包:(每样东原创 2017-02-18 15:02:17 · 252 阅读 · 0 评论 -
数据结构实验之链表四:有序链表的归并
数据结构实验之链表四:有序链表的归并 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description分别输入两个有序的整数序列(分别包含M和N个数据),建立两个有序的单链表,将这两个有序单链表合并成为一个大的有序单链表,并依次输出合并后的单链表数据。 Input第一行输入M与N的值; 第二行依次输原创 2017-02-10 15:21:12 · 196 阅读 · 0 评论 -
数据结构实验之链表五:单链表的拆分
Problem Description输入N个整数顺序建立一个单链表,将该单链表拆分成两个子链表,第一个子链表存放了所有的偶数,第二个子链表存放了所有的奇数。两个子链表中数据的相对次序与原链表一致。 Input第一行输入整数N;; 第二行依次输入N个整数。 Output第一行分别输出偶数链表与奇数链表的元素个数; 第二行依次输出偶数子链表的所有数据; 第三行依次输出奇数子链表的所有数据。原创 2017-02-10 15:55:52 · 1139 阅读 · 0 评论 -
数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
Problem Description给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历) Input输入第一行为整数n(0< n <100),表示数据的组数。 对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,0< t<k),表示有m条边,k个顶点,t为遍历的起原创 2017-02-21 16:39:57 · 319 阅读 · 0 评论 -
数据结构实验之图论四:迷宫探索
Problem Description有一个地下迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关;请问如何从某个起点开始在迷宫中点亮所有的灯并回到起点? Input连续T组数据输入,每组数据第一行给出三个正整数,分别表示地下迷宫的结点数N(1 < N <= 1000)、边数M(M <= 3000)和起始结点编号S,随后M行对应M条边,每行给出一对正整数,表示一条边相原创 2017-02-21 15:42:41 · 242 阅读 · 0 评论 -
图的基本存储的基本方式三
Problem Description解决图论问题,首先就要思考用什么样的方式存储图。但是小鑫却怎么也弄不明白如何存图才能有利于解决问题。你能帮他解决这个问题么? Input多组输入,到文件结尾。 每一组第一行有两个数n、m表示n个点,m条有向边。接下来有m行,每行两个数u、v、w代表u到v有一条有向边权值为w。第m+2行有一个数q代表询问次数,接下来q行每行有一个询问,输入一个数为a 注意:原创 2017-02-20 15:31:08 · 668 阅读 · 0 评论 -
图的基本存储的基本方式二
Problem Description解决图论问题,首先就要思考用什么样的方式存储图。但是小鑫却怎么也弄不明白如何存图才能有利于解决问题。你能帮他解决这个问题么? Input多组输入,到文件结尾。 每一组第一行有两个数n、m表示n个点,m条有向边。接下来有m行,每行两个数u、v代表u到v有一条有向边。第m+2行有一个数q代表询问次数,接下来q行每行有一个询问,输入两个数为a,b。 注意:点的编原创 2017-02-20 10:23:05 · 243 阅读 · 0 评论 -
图的基本存储的基本方式一
Problem Description解决图论问题,首先就要思考用什么样的方式存储图。但是小鑫却怎么也弄不明白如何存图才能有利于解决问题。你能帮他解决这个问题么? Input多组输入,到文件结尾。 每一组第一行有两个数n、m表示n个点,m条有向边。接下来有m行,每行两个数u、v代表u到v有一条有向边。第m+2行有一个数q代表询问次数,接下来q行每行有一个询问,输入两个数为a,b。 注意:点的编原创 2017-02-20 09:18:36 · 316 阅读 · 0 评论 -
数据结构实验之链表九:双向链表
Problem Description学会了单向链表,我们又多了一种解决问题的能力,单链表利用一个指针就能在内存中找到下一个位置,这是一个不会轻易断裂的链。但单链表有一个弱点——不能回指。比如在链表中有两个节点A,B,他们的关系是B是A的后继,A指向了B,便能轻易经A找到B,但从B却不能找到A。一个简单的想法便能轻易解决这个问题——建立双向链表。在双向链表中,A有一个指针指向了节点B,同时,B又有一原创 2017-02-10 20:12:51 · 286 阅读 · 0 评论 -
数据结构实验之链表七:单链表中重复元素的删除
Problem Description按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个)。 Input第一行输入元素个数 n (1 <= n <= 15); 第二行输入 n 个整数,保证在 int 范围内。 Output第一行输出初始链表元素个数; 第二行输出按照逆位序所建立的初始链表; 第三行输出删除重复元素后的单链表元素个数;原创 2017-02-10 17:06:22 · 313 阅读 · 0 评论 -
数据结构实验之链表六:有序链表的建立
Problem Description输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表。 Input第一行输入整数个数N; 第二行输入N个无序的整数。 Output依次输出有序链表的结点值。 Example Input6 33 6 22 9 44 5 Example Output5 6 9 22 33 44 Hint不得使用数组! Author#i原创 2017-02-10 16:38:35 · 359 阅读 · 0 评论