- 博客(122)
- 收藏
- 关注
原创 每日一题Day85
最长公共子序列描述ben和mei在做一个项目。现在他们遇到了一个难题,需要你的帮助。问题可以抽象为,给定两个整型数串,求它们的最长公共子序列。最长公共子序列的定义是,一个数列 S ,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。输入输入包含多组测试数据,每组数据首先包含一个N和一个M,分别表示两个整型串的长度,接下来是两...
2018-08-30 21:41:55
686
原创 每日一题Day84
最长上升子序列描述一个数的序列ai,当a1 < a2< ... < aS的时候,我们称这个 序列是上升的。对于给定的一个序列(a1,a2, ..., aN),我们可 以得到一些上升的子序列(ai1,ai2, ..., aiK),这里1<= i1 < i2 < ... < iK<= N。比如,对于序列(1,7, 3, 5, 9, 4, 8), ...
2018-08-29 21:31:48
404
原创 每日一题Day83
最大子列和问题给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给...
2018-08-28 22:15:59
497
原创 每日一题Day82
砾石的交换排序描述设有顺序放置的n个桶,每个桶中装有一粒砾石,每粒砾石的颜色是红,白,蓝之一。要求重新安排这些砾石,使得所有红色砾石在前,所有白色砾石居中,所有蓝色砾石居后,重新安排时对每粒砾石的颜色只能看一次,并且只允许交换操作来调整砾石的位置。输入多组数据,每组数据两行。第一行为砾石的数量n,第二行有n个字母,代表每个砾石的颜色(字母之间用空格分隔,R代表红色,W代表白色,B代...
2018-08-27 16:09:32
1633
原创 每日一题Day81
二叉树的WPL计算描述二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T, 采用二叉链表存储,结点结构为:left weight right,其中叶结点的weight域保存该结点的非负权值。设root为指向T的根结点的指针,请设计求T的WPL的算法。输入多组数据,每组数据一行,为一个二叉树的先序序列(序列中元素为0时,表示该结点为空,每两个元素之...
2018-08-26 16:31:17
776
原创 每日一题Day80
基于链地址法的散列表的删除描述请写出在散列表中删除关键字为k的一个记录的算法,设散列函数为H,H(key)=key%13,解决冲突的方法为链地址法。输入多组数据,每组三行,第一行为待输入的关键字的个数n,第二行为对应的n个关键字,第三行为需要删除的关键字k。当n=0时输入结束。输出每组数据输出用链地址法处理冲突的散列表。样例输入1 51 4 2 3 534...
2018-08-26 15:07:07
594
原创 每日一题Day79
基于链地址法的散列表的插入描述请写出在散列表中插入关键字为k的一个记录的算法,设散列函数为H,H(key)=key%13,解决冲突的方法为链地址法。输入多组数据,每组三行,第一行为待输入的关键字的个数n,第二行为对应的n个关键字,第三行为需要插入的关键字k。当n=0时输入结束。输出每组数据输出用链地址法处理冲突的散列表。样例输入1 51 4 2 3 564...
2018-08-26 14:56:58
759
原创 每日一题Day78
平衡二叉树的高度的计算描述假设一棵平衡二叉树的每个结点都标明了平衡因子b,设计一个算法,求平衡二叉树的高度。输入多组数据,每组数据一行,为平衡二叉树的先序序列。输入的数字为该节点的平衡因子。当序列为“#”时,输入结束。输出每组数据输出一行,为平衡二叉树的高度。样例输入1 110###0##1110###0##10####样例输出134解答:根据...
2018-08-26 14:26:15
1344
原创 每日一题Day77
基于链表的简单选择排序描述试以单链表为存储结构,实现简单选择排序算法。输入多组数据,每组数据两行。第一行为序列的长度n,第二行为序列的n个元素(元素之间用空格分隔,元素都为正整数)。当n等于0时,输入结束。输出每组数据输出一行,为从小到大排序后的序列。每两个元素之间用空格隔开。样例输入1 54 5 3 2 961 3 5 7 9 20样例输出1...
2018-08-25 19:07:17
639
原创 每日一题Day76
二叉排序树的限定条件下的数据输出描述已知二叉排序树采用二叉链表存储结构,根结点的指针为T,链结点的结构为(lchild,data,rchild),其中lchild、rchild分别指向该结点左,右孩子的指针,data域存放结点数据。试编写算法,从小到大输出二叉排序树中所有数值大于等于x的结点的数据。要求先找到第一个满足条件的结点后,再依次输出其他满足条件的结点。输入多组数据,每组三...
2018-08-24 16:51:38
1127
1
原创 每日一题Day75
二叉排序树的判定描述假设二叉树每个结点的元素均为一个单字符,根据给定的字符序列按照先序遍历的顺序递归创建该树的二叉链表,然后判断该二叉树是否为二叉排序树。输入多组数据,每组数据有一行。每行为一个二叉树对应的前序序列(其中‘#’表示空树)。当序列为“#”时,输入结束。输出每组数据输出1行,若此二叉树为二叉排序树则输出“YES”,否则输出“NO”。样例输入1 ba##...
2018-08-24 16:08:51
831
原创 每日一题Day74
基于递归的折半查找描述请编写一个递归的折半查找算法,查找给定有序数组中的某一元素。输入多组数据,每组数据有三行。第一行为数组长度n,第二行为n个递增排列的数字,第三行为需要查找的数字k。当n=0时输入结束。输出每组数据输出一行,如果可以找到数字,则输出“YES”,否则输出“NO”。样例输入1 51 4 6 7 8661 2 5 7 9 10080...
2018-08-24 15:26:07
674
原创 每日一题Day73
最长的最短路径的求解描述设计一个算法,求图G中距离顶点v的最短路径长度最大的一个顶点。输入多组数据,每组数据m+2行。每组数据第一行为两个整数n和m,代表有n个顶点m条路。顶点编号为1到n。第二行到第m+1行每行有三个整数a,b和c,代表顶点a和顶点b之间有一条长度为c的路。第m+2有一个整数v,代表顶点v。当n和m都等于0时,输入结束。输出每组数据输出两行。第一行为最短路...
2018-08-23 17:16:37
1981
1
原创 每日一题Day72
基于Dijkstra算法的最短路径求解描述一张地图包括n个城市,假设城市间有m条路径(有向图),每条路径的长度已知。给定地图的一个起点城市和终点城市,利用Dijsktra算法求出起点到终点之间的最短路径。输入多组数据,每组数据有m+3行。第一行为两个整数n和m,分别代表城市个数n和路径条数m。第二行有n个字符,代表每个城市的名字。第三行到第m+2行每行有两个字符a和b和一个整数d,...
2018-08-23 16:54:42
1789
1
原创 每日一题Day71
六度空间理论描述“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”假如给你一个社交网络图,请你对每个节点计算符合“六度空间”理论的结点占结点总数的百分比。输入多组数据,每组数据m+1行。第一行有两个数字n和m,代...
2018-08-22 19:46:20
753
原创 每日一题Day70
基于邻接表的长度为k的简单路径的求解描述一个连通图采用邻接表作为存储结构。设计一个算法,判断无向图中任意给定的两点是否存在一条长度为k的简单路径。输入多组数据,每组m+3数据行。第一行有两个数字n,m和k,代表有n个顶点,m条边和长度k。第二行有n个字符,代表n个顶点的编号。第三行到第m+2行每行有两个字符h和p,代表边依附的两个顶点。每条边的长度为1。第m+3行有两个字符d和f,...
2018-08-22 18:45:35
563
原创 每日一题Day69
基于深度优先搜索的两顶点路径存在与否的判断描述设计一个算法,试基于深度优先搜索判断以邻接表方式存储的有向图中是否存在由顶点vi到达顶点vj的路径。输入多组数据,每组m+3数据行。第一行有两个数字n和m,代表有n个顶点和m条边。第二行有n个字符,代表n个顶点的编号。第三行到第m+2行每行有两个字符h和k,代表边依附的两个顶点。第m+3行有两个字符vi和vj,代表需要判断的两个顶点。当...
2018-08-22 17:31:01
617
原创 每日一题Day68
基于邻接表的深度优先遍历描述一个连通图采用邻接表作为存储结构。设计一个算法,实现从顶点v出发的深度优先遍历的非递归过程。输入多组数据,每组m+2数据行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个整数h和k,代表边依附的两个顶点。第m+2行有一个整数d,代表从d开始遍历。当n和m都等于0时,输入结束。输出每组数据输出一行,为...
2018-08-21 19:50:24
1248
原创 每日一题Day67
基于邻接矩阵的顶点的删除描述给定一个无向图,在此无向图中删除一个顶点。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有一个数字f,代表删除的顶点编号。当n和m都等于0时,输入结束。输出每组数据输出n-1行。为删除顶点后的邻接矩阵。每两个数字之间用空格隔开。...
2018-08-21 19:06:00
632
原创 每日一题Day66
基于邻接矩阵的边的删除描述给定一个无向图,在此无向图中增加一条边。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有两个数字f和g,代表删除的边所依附的两个顶点。当n和m都等于0时,输入结束。输出每组数据输出n行。为删除边后的邻接矩阵。每两个数字之间用空格隔...
2018-08-21 18:48:43
712
原创 每日一题Day65
基于邻接表的边的删除描述给定一个无向图,在此无向图中删除一条边。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有两个数字f和g,代表删除的边所依附的两个顶点。当n和m都等于0时,输入结束。输出每组数据输出n行。为删除边后的邻接表。每两个数字之间用空格隔开。...
2018-08-21 18:44:20
421
原创 每日一题Day64
基于邻接矩阵的新边的增加描述给定一个无向图,在此无向图中增加一条边。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有两个数字f和g,代表增加的边所依附的两个顶点。当n和m都等于0时,输入结束。输出每组数据输出n行。为增加边后的邻接矩阵。每两个数字之间用空格...
2018-08-21 18:23:18
571
原创 每日一题Day63
基于邻接表的新边的增加描述给定一个无向图,在此无向图中增加一条边。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有两个数字f和g,代表增加的边所依附的两个顶点。当n和m都等于0时,输入结束。输出每组数据输出n行。为增加边后的邻接表。每两个数字之间用空格隔开...
2018-08-21 18:16:48
679
原创 每日一题Day62
基于邻接表的顶点的删除描述给定一个无向图,在此无向图中删除一个顶点。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有一个数字f,代表删除的顶点编号。当n和m都等于0时,输入结束。输出每组数据输出n-1行。为删除顶点后的邻接表。每两个数字之间用空格隔开。...
2018-08-21 17:36:33
557
原创 每日一题Day61
基于邻接表的新顶点的增加描述给定一个无向图,在此无向图中增加一个新顶点。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有一个数字f,代表新插入的顶点编号。当n和m都等于0时,输入结束输出每组数据输出n+1行。为增加顶点后的邻接表。每两个数字之间用空格隔开。...
2018-08-21 17:11:13
372
原创 每日一题Day60
基于邻接矩阵的新顶点的增加描述给定一个无向图,在此无向图中增加一个新顶点。输入多组数据,每组m+2行。第一行有两个数字n和m,代表有n个顶点和m条边。顶点编号为1到n。第二行到第m+1行每行有两个数字h和k,代表边依附的两个顶点。第m+2行有一个数字f,代表新插入的顶点编号。当n和m都等于0时,输入结束。输出每组数据输出n+1行。为增加顶点后的邻接矩阵。每两个数字之间用空格...
2018-08-21 16:47:52
921
原创 每日一题Day59
基于二叉链表的二叉树最大宽度的计算描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法计算该二叉树的最大宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值)。输入多组数据。每组数据一行,为二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出一行。为二叉树的最大宽度。样例输入1 ...
2018-08-20 19:31:40
665
原创 每日一题Day58
基于二叉链表的二叉树最长路径的求解描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法求出该二叉树中第一条最长的路径。输入多组数据。每组数据一行,为二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出一行,第一行为二叉树的最长路径长度,第二行为此路径上从根到叶结点的各结点的值。样例输入1...
2018-08-20 18:33:00
811
原创 每日一题Day57
基于二叉链表的二叉树叶子结点到根结点的路径的求解描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法求出每个叶子结点到根结点的路径。输入多组数据。每组数据一行,为二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出n行(n为叶子结点的个数),每行为一个叶子结点到根节点的路径(按照叶子结点从左...
2018-08-20 18:15:53
492
原创 每日一题Day56
基于二叉链表的二叉树高度的计算描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,,编写递归算法计算二叉树的高度。输入多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据分别输出一行,为二叉树的高度。样例输入1 abcd00e00f00ig00h00abd00e00...
2018-08-20 17:26:06
376
原创 每日一题Day55
基于二叉链表的二叉树结点个数的统计描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法对二叉树的结点(度为0、1、2)个数进行统计。输入多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出一行,每行三个数分别为二叉树的度为0、1、2的结点个数。每两个数用空格...
2018-08-20 17:09:00
512
原创 每日一题Day54
基于二叉链表的二叉树的遍历描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写三个递归算法分别实现二叉树的先序、中序和后序遍历。输入多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出三行,为二叉树的先序、中序和后序序列。样例输入1 abcd00e00f00i...
2018-08-20 16:58:58
456
原创 每日一题Day53
基于二叉链表的二叉树的双序遍历描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法实现该二叉树的双序遍历(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树)。输入多组数据。每组数据一行,为二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,...
2018-08-20 16:52:32
632
原创 每日一题Day52
基于二叉链表的二叉树左右孩子的交换描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法交换该二叉树的左右孩子。输入多组数据。每组数据一行,为二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出一行。为交换左右孩子后的二叉树的先序序列。样例输入1 abcd00e00f00ig00...
2018-08-20 16:45:53
952
原创 每日一题Day51
基于二叉链表的树结构相等的判断描述设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,按此方法创建两棵二叉树,然后编写递归算法判断这两棵树是否相等。输入多组数据,每组数据有两行。每行为一个二叉树的先序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。输出每组数据输出一行。若两个二叉树相等输出“YES”,否则输出“NO”。样例...
2018-08-20 15:52:49
716
原创 每日一题Day50
病毒感染监测描述医学研究者最近发现了某些新病毒,通过对这些病毒的分析,得知它们的DNA序列都是环状的。现在研究者收集了大量的病毒DNA和人的DNA数据,想快速检测出这些人是否感染了相应的病毒。为方便研究,研究者将人的DNA和病毒的DNA均表示成由一些小写字母组成的字符串,然后检测某种病毒的DNA序列是否在患者的DNA序列中出现过,如果出现过,则此人感染了病毒,否则没有感染。注意:人的DNA...
2018-08-19 14:46:55
3126
原创 每日一题Day49
迷宫问题描述密密被困在一个迷宫里,迷宫有n个路口,编号为1-n。密密现在站在第一个路口,出口编号为m。先给出每个路口通向何处,问密密能否逃出迷宫。输入多组数据,每组数据n+2行。第一行为一个正整数n代表路口的个数,之后n行,这n行中的第i行为第i个路口的向左路口、向前路口、向右路口。最后一行为一个正整数m代表迷宫的终点。当n=0时输入结束。输出每组数据输出一行,若密密能走出...
2018-08-18 21:23:33
1567
原创 每日一题Day48
递归求解单链表中的最大值描述利用单链表表示一个整数序列,利用递归的方法求出单链表中整数的最大值。输入多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔)。当n=0时输入结束。输出对于每组数据分别输出一行,输出每个链表的最大值。样例输入1 41 2 3 45-1 2 39 2 30样例输出1439解答...
2018-08-18 16:54:35
497
原创 每日一题Day47
Ackermann函数的非递归求值描述已知Ackermann函数定义如下:写出计算Ack(m,n)的非递归算法。输入多组数据,每组数据有一行,为两个整数m和n。当m和n都等于0时,输入结束。输出每组数据输出一行,为Ack(m,n)。样例输入1 2 10 0样例输出15解答:将递归函数改为非递归函数。#include<stdio...
2018-08-18 16:31:01
746
原创 每日一题Day46
Ackermann函数的递归求值描述已知Ackermann函数定义如下:写出计算A(m,n)的递归算法。输入多组数据,每组数据有一行,为两个整数m和n。当m和n都等于0时,输入结束。输出每组数据输出一行,为A(m,n)。样例输入1 3 53 100 0样例输出12538189解答:递归函数。#include<stdio.h...
2018-08-18 15:06:17
465
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人