上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 15 下一页
摘要: 1)java集合框架的层次结构2)使用Collection接口定义的公用方法对集合和线性表操作3)使用Iterator接口遍历集合4)使用JDK的增强for循环替代迭代Iterator进行集合遍历5)熟悉Set接口,了解何时及如何使用HashSet,LinkedHashSet或TreeHashSet来存储元素6)使用Comparator接口来比较元素7)熟悉List接口,了解何时以及如何使用ArrayList或者LinkedList来存储元素8)区分Vector与ArrayList,并了解如何使用Vector和Stack9)使用JDK1.5的一般类型来简化程序设计10)理解Collection 阅读全文
posted @ 2011-05-25 19:33 jinmengzhe 阅读(14028) 评论(4) 推荐(2) 编辑
摘要: 用邻接矩阵存放图中顶点的关系,实现无向图的邻接矩阵存储。1)图的建立,删除(添加,删除边/顶点)2)广度和深度优先遍历3)prim最小生成树1,成员变量,构造函数,以及数组扩展实现策略:维护一个顶点的数组,以及一个二维的数组来表示顶点之间的关系,维护2个基本变量记录顶点和边的数量。重点是:1)可以动态扩展顶点数组,并保持数组的连续性,这意味着删除顶点时后面的顶点要前移,那么顶点的编号也变了,关系矩阵也要改变。 2)关系矩阵也动态维护,随时保持和顶点数组一样大。顶点数组的长度为VNodes.length,实际存放了顶点的位置只到了size()处,对应的,关系矩阵的大小为int[VNodes.le 阅读全文
posted @ 2011-05-23 15:53 jinmengzhe 阅读(10971) 评论(0) 推荐(2) 编辑
摘要: 描述有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个小猴子,它会往下跑。每个内结点上都有一个开关,初始全部关闭,当每次有小猴子跑到一个开关上时,它的状态都会改变,当到达一个内结点时,如果开关关闭,小猴子往左走,否则往右走,直到走到叶子结点。一些小猴子从结点1处开始往下跑,最后一个小猴儿会跑到哪里呢?输入输入二叉树叶子的深度D,和小猴子数目I,假设I不超过整棵树的叶子个数,D<=20.最终以 0 0 结尾输出输出第I个小猴子所在的叶子编号。样例输入4 阅读全文
posted @ 2011-05-23 13:06 jinmengzhe 阅读(590) 评论(0) 推荐(1) 编辑
摘要: 描述Given two strings A and B, whose alphabet consist only ‘0’ and ‘1’. Your task is only to tell how many times does A appear as a substring of B? For example, the text string B is ‘1001110110’ while the pattern string A is ‘11’, you should output 3, because the pattern A appeared at the posit输入The f 阅读全文
posted @ 2011-05-23 00:49 jinmengzhe 阅读(606) 评论(0) 推荐(1) 编辑
摘要: 在无向加权图中,n个顶点的最小生成树有n-1条边,这些边使得n个顶点之间可达,且总的代价最小。prim算法是一种贪心算法,将全部的顶点划分为2个集合,每次总在2个集合之间中找最小的一条边,局部最优最终达到全局最优,这正是贪心的思想。具体的描述参见相关书籍:描述从单一顶点开始,普里姆算法按照以下步骤逐步扩大树中所含顶点的数目,直到遍及连通图的所有顶点。输入:一个加权连通图,其中顶点集合为V,边集合为E;初始化:Vnew = {x},其中x为集合V中的任一节点(起始点),Enew = {};重复下列操作,直到Vnew = V:在集合E中选取权值最小的边(u, v),其中u为集合Vnew中的元素,而 阅读全文
posted @ 2011-05-22 15:56 jinmengzhe 阅读(1448) 评论(0) 推荐(1) 编辑
摘要: 在无向图的基础上,稍作修改就可以实现有向图:1)public void addEdge(int start,int end)在无向图中要调用2次private void addEdgeToVNodeList(VNode node,Edge edge),将2个端点的边链表中都加上边,有向图中只需要在一个方向添加2)public void removeEdge(int start,int end)同上,只调用一次private void removeEdgeFromVNodeList(VNode node,Edge edge)3)public void addVNode(Object elemen 阅读全文
posted @ 2011-05-22 15:21 jinmengzhe 阅读(3724) 评论(0) 推荐(1) 编辑
摘要: 用邻接表实现了一个无向图,在实现时,包含了添加和删除顶点,添加和删除边,size方法(顶点个数),isEmpty方法,广度和深度优先迭代器1,成员变量,构造方法,数组扩展private VNode[] VNodes; //将顶点放在数组中 private int nodeCount; //顶点个数,也表示下一个可用的顶点数组下标 private int edgeCount; //边个数 //int kind; //图种类标识 public UnDirectedGraph() //构造一个空图 { VNodes = new VNode[5]; nodeCount = 0; edgeCount = 阅读全文
posted @ 2011-05-21 16:18 jinmengzhe 阅读(4561) 评论(0) 推荐(2) 编辑
摘要: 图里面的东西太多,先写一个概要。在后面的文章中将继续逐个探讨和实现。1,一些概念顶点边(无向图) 或 弧(有向图)完全图,子图,连通图路径,简单路径(顶点不重复)生成树(无向图),关键路径,拓扑排序2,存储结构非常重要!!!2种存储方式,邻接矩阵和邻接表目前我写的都是用邻接表写的,但后来发现大家还是用邻接矩阵比较多,后来问了下baidu的阿海,他说一般都是用邻接矩阵,简单一些,但用过邻接表话,肯定可以秒杀邻接矩阵。恩 ,有时间我也写一下邻接矩阵的实现,,,,无论哪种方式,顶点一般来说都放在数组里。(当然你也可以放在链表里,这样似乎很麻烦,很少见到这样做的),两种方式的区别在于顶点之间的关系的实 阅读全文
posted @ 2011-05-21 15:40 jinmengzhe 阅读(2648) 评论(1) 推荐(2) 编辑
摘要: 描述 现在,有一行括号序列,请你检查这行括号是否配对。输入第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入3[(])(])([[]()])样例输出NoNoYesimport java.util.Scanner;im 阅读全文
posted @ 2011-05-21 01:42 jinmengzhe 阅读(1765) 评论(0) 推荐(1) 编辑
摘要: 用数组来实现堆比链式实现简单,这是因为:1)在插入操作中,链式实现需要一个getInsertNode方法去找插入在哪个结点之下,而在数组中,插入结点的位置下标是依次递增的,(完全二叉树)插入操作的向上调整也可以直接根据下标来找父节点(思维和链式一样)2)在删除堆顶的操作中,链式实现把lastNode的值赋给堆顶后,还要去找倒数第二个结点来更新lastNode,而在数组里就不需要,直接根据下标就知道哪个是倒数第二个结点,而且也不需要记录lastNode。删除操作的自上往下调整,左右子节点也可以通过下标来定,这个思路和链式一样,也是用递归,只是改为了下标来移动经过上面的比较和分析,数组怎么去实现已 阅读全文
posted @ 2011-05-17 01:07 jinmengzhe 阅读(4582) 评论(0) 推荐(1) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 15 下一页