
数据结构
YouthDance
JUST DO IT
展开
-
初学链表
一下程序建立了一个带有头结点的单向链表,链表节点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不妨数据,表空的条件是ph->next == NULL)。 其中在函数CreatList()中的指针ph , p, q的作用分别是用来表示创建链表的表头,数据的输入,又来作为ph的表尾是每次数据都插入到表尾当中去。 #include #include原创 2013-06-27 20:41:17 · 1255 阅读 · 0 评论 -
poj2010 Moo University - Financial Aid
Moo University - Financial Aid题意: 一个私立学校的学生要申请奖学金,而学校的金额有限。因此,学校希望在金额不超过F的情况下从C中选得N对数。 给出三个数N,C,F。分别代表在C对数中要取得N对数。而每对数分别代表成绩,跟申请金额。要求取得N对数中的总金额不超过F的条件下,然取得中间的以为学生的成绩最高。(N为even)算法分析原创 2014-09-18 10:52:39 · 958 阅读 · 1 评论 -
uva Stacks of Flapjacks
Stacks of Flapjacks 题目链接:Click Here~题目描述: 给你n个数,要你得到的最后结果是从下到大排序。但是给出的序列不一定是有序你,要通过你的调整。问:要经过哪几个位置上的数的调整?算法分析: 一开始,我的思路是直接模拟一边原创 2014-07-22 09:46:13 · 983 阅读 · 0 评论 -
What Are You Talking About HDU
What Are You Talking About Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K (Java/Others) Total Submission(s): 10112 Accepted Submission(s): 3198Proble原创 2013-07-29 10:32:03 · 1335 阅读 · 0 评论 -
堆(优先队列)的灵活用法
堆(优先队列)的灵活用法 我想大家都应该知道什么事堆了。所以,这里就不再介绍了。如果,不知道的话,可以自己去网上查一下资料。 堆在竞赛中运用非常的灵活,因此一般可以用堆的题目,都有另外的方法,只是一般都是堆实现起来比较容易写代码和容易理解罢了。说理论的知识我也不会,所以就直接给出两道题来说明一下堆是如何在问题中灵活运用的吧。 首先,先来看一道去年的腾讯马拉松的题目吧。不过原创 2014-03-02 20:19:52 · 1471 阅读 · 0 评论 -
腾讯马拉松之 湫湫系列故事——消灭兔子
湫湫系列故事——消灭兔子题目链接:Click Here~题目分析: 题目要求,用最小的花费杀死所有的Rabbits。可以从题意就推测出这是一道贪心题,但是不是普通的做法就可以过了,因为数据太大,所以要用到一些数据结构。 本题可以用多种算法解题。好像本人暂时知道的有三种,贪心+优先队列,贪心+STL,线段树。我是用贪心+STL做的。如果,对其他做法感兴趣的话可原创 2014-02-26 15:45:34 · 1533 阅读 · 0 评论 -
初识RMQ
RMQ(Range Minimum/Maximum Query)问题: RMQ问题是求给定区间中的最值问题。当然,最简单的算法是O(n)的,但是对于查询次数很多(设置多大100万次),O(n)的算法效率不够。可以用线段树将算法优化到O(logn)(在线段树中保存线段的最值)。不过,Sparse_Table算法才是最好的:它可以在O(nlogn)的预处理以后实现O(1)的查询效率原创 2013-07-10 11:05:44 · 727 阅读 · 0 评论 -
Hdu Binary Tree Traversals
Problem Description A binary tree is a finite set of vertices that is either empty or consists of a root r and two disjoint binary trees called the left and right subtrees. There are three mo原创 2013-07-23 15:07:21 · 1088 阅读 · 0 评论 -
二叉树实现
二叉树节点声明typedef struct TreeNode *PtrToNode;typedef PtrToNode Tree;struct TreeNode{ ElementTpe Element; Tree Left; Tree Right;}; 建立一棵空树的例程 MakeEmpty( searchTree T ){ i翻译 2013-07-23 10:13:23 · 1237 阅读 · 0 评论 -
The order of a Tree HDU
The order of a TreeTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 834 Accepted Submission(s): 452Problem DescriptionAs we kno原创 2013-07-23 16:47:10 · 952 阅读 · 0 评论 -
首道二叉树 HDU3791:二叉搜索树
HDU3791 二叉搜索树 Problem Description判断两序列是否为同一二叉搜索树序列 Input开始一个数n,(1接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。原创 2013-07-22 17:19:59 · 846 阅读 · 0 评论 -
关于递归删除链表节点为什么不会断链问题解释
问题的由来: 当你第一次实现用递归实现链表删除功能的时候,是否有一丝丝的考虑过。这个问题呢?为什么对于非递归版本的删除必须要知道当前要删除节点的前驱,而需要对其前驱节点的next域指针进行修改。而递归删除却不需要呢?难道这样不会造成链表的断链吗? 好了。我们开始抽象出我们今天要解决的问题。问题一: 递归实现链表节点的删除和非递归删除的区别是什么?问题二: 为原创 2015-06-22 13:27:21 · 12751 阅读 · 7 评论