关闭
当前搜索:

[置顶] 九度OJ——1176树查找

题目描述: 有一棵树,输出某一深度的所有节点,有则输出这些节点,无则输出EMPTY。该树是完全二叉树。 输入: 输入有多组数据。 每组输入一个n(1<=n<=1000),然后将树中的这n个节点依次输入,再输入一个d代表深度。 输出: 输出该树中第d层得所有节点,节点间用空格隔开,最后一个节点后没有空格。 样例输入: 4 1 2 3 4 2 样例输出: 2 3思路: 用数组存...
阅读(134) 评论(0)

[置顶] 九度OJ——1113二叉树

题目描述: 如上所示,由正整数1,2,3……组成了一颗特殊二叉树。我们已知这个二叉树的最后一个结点是n。现在的问题是,结点m所在的子树中一共包括多少个结点。比如,n = 12,m = 3那么上图中的结点13,14,15以及后面的结点都是不存在的,结点m所在子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。 输入: 输入数据包括多行,每行给出一组测试数据,包括...
阅读(147) 评论(0)

[置顶] 九度OJ——1078二叉树遍历

题目描述: 二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树; 后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。 给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。 输入: 两个字符串,其长...
阅读(180) 评论(0)

[置顶] 九度OJ——1107搬水果

题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆。每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。当然经过 n‐1 次合并之后,就变成一堆了。小明在合并水果时总共消耗的体力等于每次合并所耗体力之和。 假定每个水果重量都为 1,并且已知水果的种类数和每种水果的数目,你的任务是设计出合并的...
阅读(230) 评论(0)

[置顶] 九度OJ——1172哈夫曼树

题目描述: 哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。 输入: 输入有多组数据。 每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。 输出: 输出权值。 样例输入: 5 1 2 2 5 9 样例输出: 37A...
阅读(646) 评论(0)

[置顶] 九度OJ——1019简单计算器

题目描述: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 输入: 测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。 输出: 对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。 样例输入: 1 + 2 4...
阅读(282) 评论(0)

[置顶] 九度OJ——1014排名

题目描述: 今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑每题的分值,所以并不是最后的排名。给定录取分数线,请你写程序找出最后通过分数线的考生,并将他们的成绩按降序打印。 输入: 测试输入包含若干场考试的信息。每场考试信息的第1行给出考生人数N ( 0 < N < 1000 )、考题数M ( 0 < M < = 10 )、分数线(正整数...
阅读(163) 评论(0)

[置顶] 九度OJ——1007奥运会排序问题

题目描述: 按要求,给国家进行排名。 输入: 有多组数据。 第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。 第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万)。 接下来一行给出M个国家号。 输出: 排序有4种方式: 金牌总数 奖牌总数 金牌人口比例 奖牌人口比例 对每个国家给出最佳排名排名方式 和 最终排名 格式为: 排名:排名方式 如果有相同的...
阅读(174) 评论(0)

[置顶] 九度OJ——1023Excel排序

题目描述: Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。 对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3 时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递...
阅读(186) 评论(0)

[置顶] 2016年计算机联考真题——寻求最大子集和的差

概述已知由n(n>=2)个正整数构成的集合A = {ak|0<=k算法思想根据快速排序的思想,把找到最佳的划分,把最小的[n/2]个数放到A1,其余的数放到A2。分组结果即为题意所求。 算法步骤: 1)若i=[n/2],则划分结束。 2)若i[n/2],则枢轴及之后的所有元素均属于A2,继续对i之前的元素...
阅读(361) 评论(0)

[置顶] 快速排序

概述快速排序和归并排序一样也是分而治之策略的应用,基本思路是在数组中选取一个主元,以它为标准,遍历数组把小于它的数放在右边,大于它的数放在左边。递归上述过程直至有序。选主元选主元与划分子集这两个问题关乎快速排序的效率问题。选主元有很多方式,比如直接那第一个数作主元,那么当数组基本有序时那么时间复杂度就变成了O(n^2)了,而不是O(nlogn),也可以利用随机函数来选取下标,从而确定主元,但是ran...
阅读(1076) 评论(0)

[置顶] 归并排序

概述归并排序是典型的分而治之策略的应用。主要是把一个数组分成若干个子数组进行从小到大的归并直至有序。下面所说的归并排序默认为2路归并排序。递归算法思想1)将数组平分为2等份,对这两个子数组进行从小大到有序归并。 2)递归对左半部分进行2路归并 3)递归对右半部分进行2路归并//一趟归并 void Merge(int* data,int* tmp,int left,int right,int r...
阅读(268) 评论(0)

[置顶] 堆排序

概述堆排序是利用堆的特性——堆顶元素一定是这个堆的最大值或者最小值,来使选择排序中每趟选择最值变得更加高效的思路。对于堆的相关内容移步我之前的博客:堆算法思想这里我们默认从小到大排序。 思路一:首先把通过数组构造一个最小堆,之后依次执行最小堆的删除操作直至最小堆为空则能得到一个从小到大的序列。对于时间复杂度一定是O(nlogn)。然而这个算法却带来了O(n)的空间复杂度。那么这显然是不划算的。故这...
阅读(171) 评论(0)

[置顶] 希尔排序

概述由于之前的冒泡排序和插入排序效率低平均复杂度为O(n^2),那么为了加快排序效率,希尔排序就这样被提出来了。只要思想是定义一个增量序列来反复对数组按增量分割成的子序列进行直接插入排序,直至基本有序。算法思想先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插...
阅读(270) 评论(0)

[置顶] 简单排序

概述排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。冒泡,插入这三种排序是最简单的排序,本文将主要讲解这两种排序思想。关与图解请参照如下地址的博客(是在不好画图,自己的图就是取自这篇博客):http://www.cnblogs.com/chengxiao/p/610300...
阅读(195) 评论(0)

[置顶] 散列表(下)——分离链接法

概述在我的上一篇博客散列表(上)——开放定址法 主要讲述了开放定址法的三种思路:线性探测法,平法探测法,双散列法三种思路,以及线性探测的代码实现。在这篇博客里,主要讲解第二中解决冲突的办法——分离链接法。分离链接法分离链接法的思想就是:将相应位置上冲突的所有关键词存储在同一个单链表中。主要办法是,构造以所有可能地址的为头的单链表数组。对于单链表的相关操作已经在之前的博客详细讲述了,如有需要请移步我之...
阅读(378) 评论(0)

[置顶] 散列表(上)——开放定址法

概述散列表,又称哈希表,hash表。散列表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于散列表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。设计思想Hash表采用一个映射函数 f : key —> address 将关键字映射到...
阅读(575) 评论(0)

[置顶] 拓扑排序

概述拓扑排序:如果图中从v到w有有一条有向路径,则v一定要排在w之前。满足此条件的顶点序列称为一个拓扑序。获得拓扑序的过程就是拓扑排序。有向无环图:一个有向图中不存在环,则称为有向无环图,简称DAG(Directed Acyclic Graph)。AOV网络:如果用DAG图买表示一个工程,其顶点表示活动,用有向边拓扑排序算法思想:从图从选择一个没有前驱结点的顶点输出,之后删除该顶点和所有以它为起始点...
阅读(226) 评论(0)

[置顶] 最小生成树算法(下)——Kruskal(克鲁斯卡尔)算法

概要在我的上一篇文章最小生成树算法(上)——Prim(普里姆)算法 主要讲解对于稠密图较为合适的Prim算法。那么在接下里这片文章中我主要讲解对于稀疏图较为合适的Kruskal算法。Kruskal算法Kruskal算法思想概述: 如果说Prim算法可以用让一颗小树慢慢长大,那么Kruskal算法也可以用一句话来总结:将森林合并成树。就是说它比Prim算法更直接的贪心,把每个顶点看成一棵树,那么恶...
阅读(387) 评论(0)

[置顶] 最小生成树算法(上)——Prim(普里姆)算法

概述最小生成树:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。根据定义可知对于一个有V个顶点的图来说,其最小生成树定包含V个顶点与V-1条边。反过来如果一个图的最小生成树存在,那么图一定是连通图。 对于最小生成树算法最著名的有两种:Prim算法与Kruskal算法。Prim算法Prim算法思想描述: Prim算法可以简单描述成...
阅读(398) 评论(0)
327条 共17页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:138596次
    • 积分:4744
    • 等级:
    • 排名:第7079名
    • 原创:327篇
    • 转载:0篇
    • 译文:0篇
    • 评论:80条
    博客专栏
    最新评论