上一页 1 ··· 11 12 13 14 15
摘要: 题目链接:http://poj.org/problem?id=1002思路分析:先对输入字符进行处理,转换为标准形式;插入标准形式的电话号码到查找树中,若有相同号码计数器增加1,再中序遍历查找树。代码如下:#include #include #include struct TreeNode;type... 阅读全文
posted @ 2014-10-06 04:22 Leptus 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2231思路分析:先排序,再推导计算公式。代码如下:#include #include using namespace std;int main(){ long long int ans = 0, arr[10010]; in... 阅读全文
posted @ 2014-10-06 02:56 Leptus 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2371思路分析:使用计数排序或其他时间复杂度为O( log N )的排序。代码如下:#include #include #define MAX_N ( 100000 + 10 )using namespace std;int A[MAX... 阅读全文
posted @ 2014-10-06 02:24 Leptus 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 题目描述:http://poj.org/problem?id=2823思路分析:求某个区间的最大与最小值,可以使用两个单调队列,由于需要在队列前删除元素和在队列后增加元素,所以考虑使用双端队列;在双端队列中记录元素的下标,另外,双端队列为单调队列,满足单调非递增或单调非递减,则队列第一个元素为区间最... 阅读全文
posted @ 2014-10-06 01:03 Leptus 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 一、题目 编写支持双端队列的例程,插入与弹出操作均花费 O(1)时间二、解答 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的数据结构。 双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行。 基本操作:在双端队列两端插入与删除。 ADT... 阅读全文
posted @ 2014-10-05 23:27 Leptus 阅读(747) 评论(0) 推荐(0) 编辑
摘要: 一、题目 用一个数组实现三个(或多个)栈二、解答 用一个数组实现三个乃至多个栈,如果想使用一个数组构造两个栈的思想则行不通; 考虑使用静态链表,数组结点中存在两个域,关键字域与指示栈的前驱的游标,则可以使三个栈可以用一个数组表示; ADT的关键术语: Capacity: 数组的容量; S... 阅读全文
posted @ 2014-10-05 21:49 Leptus 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 一、题目 用一个数组A[ 1....N ]实现两个栈,除非数组的每一个单元都被使用,否则栈例程不能有溢出,注意PUSH和POP操作的时间应为O(1)。二、解法 对于一个数组,由它的两端作为栈底,栈向数组中间扩展。当数组中每个元素被用到时,栈满。三、代码struct Node;typedef No... 阅读全文
posted @ 2014-10-05 18:08 Leptus 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3250思路分析:题目要求求每头牛看见的牛的数量之和,即求每头牛被看见的次数和;现在要求如何求出每头牛被看见的次数?考虑到对于某头特定的牛来说,看见它的牛一定在它的左边,另外其高度应该大于该牛的高度,所以只需要计算在其左边并高度大于它的牛... 阅读全文
posted @ 2014-09-22 00:51 Leptus 阅读(333) 评论(0) 推荐(1) 编辑
上一页 1 ··· 11 12 13 14 15