2-3-4树
定义
234表示一个节点可能还有子节点的个数,有以下三种情况:
有1个数据项的节点含有2个子节点有2个数据项的节点含有3个子节点有3个数据项的节点含有4个子节点
如果使用L表示子节点的个数,D表示数据项的个数,那么L=D+1,非叶子节点个数总比它数据项含有的数据项多1.
树的组织
节点中的数据项按照关键字升序排列。
搜索2-3-4树
从根开始查找,除非查找...
分类:
其他好文 时间:
2014-05-25 18:38:38
阅读次数:
184
题目:给定两个表示大数的字符串,求乘积,这里只针对正数。
分析:开始的时候打算一位一位的算,按着笔算的形式,但是写着写着发现太麻烦,后来在网上找到计算乘法的令一种技巧,感觉简洁多了。
先看代码,再分析。
string multiply(string num1, string num2) {
if(num1 == "0" || num2 == "0")
return "0";
//...
分类:
其他好文 时间:
2014-05-25 18:24:31
阅读次数:
195
题目:输入一个整数s,打印出所有和为s的连续整数序列(至少含有2个数)。例如输入9,则输出2、3、4和4、5两个序列
方案一:由于序列至少要2个数,则两个数上限值为(1+s)/2,我们可以枚举该序列的起点和终点求所有满足的序列。时间复杂度为O(n^2),效率比较低
方案二:我们设置两个指针start和end分别表示当前序列的起点和终点,并记序列和为sum。当sum = s的时候输出这个...
分类:
其他好文 时间:
2014-05-25 18:18:18
阅读次数:
191
题目:
链接:点击打开链接
题意:
n个课程m天完成,a[i][j]表示用j天完成第i个课程得到的价值,求最大价值。
算法:
分组背包。
思路:
m天是总容量,n是组数。
代码:
#include
#include
#include
using namespace std;
int n,m;
int a[110][...
分类:
其他好文 时间:
2014-05-25 18:16:18
阅读次数:
223
引言
这周的作业其实有点复杂,需要完成的代码有点多,有点绕。本周的课程主要讲了Scala中的类、继承和多态,作业也很好的从各个方面考察了课程的内容。作业题目工程主要需要完成的部分是TweetSet.scala这个文件中的内容,比较新潮,都是和推特相关。其中定义了一个抽象类TweetSet,以及其的两个子类Empty、NonEmpty,表示空集和非空集。非空集使用二叉树来表示,二叉树的根是一个Tw...
分类:
其他好文 时间:
2014-05-25 16:53:15
阅读次数:
444
状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。
适用场景:
一个对象的行为取决于他的状态,并且它必须在运行时刻根据状态改变他的行为。一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。
...
分类:
其他好文 时间:
2014-05-25 16:26:36
阅读次数:
209
算法训练 K好数
时间限制:1.0s 内存限制:256.0MB
问题描述
如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。
...
分类:
其他好文 时间:
2014-05-25 13:02:53
阅读次数:
358
作用:使设计的容器有能力包含类型不同而彼此相关的对象。
容器通常只能包含一种类型的对象,所以很难再容器中存储对象本身。存储指向对象的指针,虽然允许通过继承来处理类型不同的问题(多态性),但是也增加了内存分配的额外负担。所以我们通过定义名为代理的对象来解决该问题。代理运行起来和它所代表的对象基本相同,但是允许将整个派生层次压缩在一个对象类型中。
假设有一个表示不同种类的交通工具的类派生层次:...
分类:
编程语言 时间:
2014-05-25 10:06:40
阅读次数:
249
题目链接
第一次写nlogn复杂度的LIS,纪念一下。
题目意思是说。有两条平行线,两条平行线都有n个城市,都是从左到右标记为1--n,一条线上是富有城市,一个是贫穷城市。输入n,接下来有n行,p,r表示穷城市p和富有城市r
之间可以建一条路(p的顺序是1--n,一个贫穷城市只对应一个富有城市(弱爆的语文描述能力T_T)),公路不能交叉。
问最多可以建多少条公路。
...
分类:
其他好文 时间:
2014-05-25 09:58:28
阅读次数:
256
POJ 1018 Communication System (动态规划)
题目大意:
有T组测试数据,每组1个n,表示n行,接下来n行,每行一个m,表示有m个管道,每个管道有流量和费用,最后求从n行中,每行选择1个管道,要求 B/P最大 ,B表示所选的那个方案中n个管道的最小的那个的流量,P表示n个管道费用和。
解题思路:
朴素的动态规划,dp[i]记录,当前B为i的P,也就是流量的最小费用和。实现可以利用队列代替滚动数组。...
分类:
其他好文 时间:
2014-05-25 06:58:58
阅读次数:
214