- 博客(13)
- 收藏
- 关注
转载 Java RTTI与反射
一、Java的RTTI RTTI(Run-Time Type Identification,通过运行时类型识别)的含义就是在运行时识别一个对象的类型,其对应的类是Class对象,每个java里面的类都对应一个Class对象(在编写并且编译后),这个对象被保存在这个类的同名class文件里。类加载器在类被第一次静态调用(比如一个静态方法,一个静态代码块或者new关键字调
2015-06-23 16:34:38
480
原创 正则表达式中量词贪婪型和勉强型的讨论(Java语言描述)
在正则表达式的书写量词时,具有贪婪型号、勉强型2种常见类型(Java中还有用于完全匹配的占有型)。刚开始学习时,并没有意识到他们之间的区别。但是在匹配一个例子时,调了好长时间的BUG才意识到原来是匹配模式方面思考不严谨。下面就将几点经验大家共享:首先是贪婪型和勉强型的区别,贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配。导致此问题的
2015-06-18 10:03:12
1099
1
原创 Java语言描述:动态规划法之编辑距离问题
/* * 该程序通过动态规划法解决了编辑距离问题。 * 算法思想: * 将该问题逐步分解为子问题,每次让其规模降1,dist[i][j]标识出了当目标字段长为从第1个字母到 * 第i个字母,源字段从第1个字母到第j个字母时的最短路径。所以,我们要求的目标值就是dis[des.length][res.length]。 * 最优子结构:当该问题的所有子问题都达到最优解时,dis[des.le
2015-06-08 20:17:07
1147
原创 Java语言描述:动态规划法之最长公共子序列问题
问题描述:最长公共子序列的问题常用于解决字符串的相似度,是一个非常实用的算法。字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列。令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk-1”是X的子序列,存在X的一个严格递增下标序列,i1,…,ik-1>,使得对所有的j=0,1,…,k-1,有xij=yj。例如,X
2015-06-08 15:45:21
1485
原创 Java语言描述:递归与分治策略之合并排序与快速排序
合并排序:package DivideAndConquer;public class MergeSort { //一定要多传入一个多余的temp数组用于存放排序的中间结果 public static> void mergeSort1( AnyType [] a,AnyType[] temp,int left,int right){ //只要容器中的最左边的元素序号小于最右边的
2015-06-07 23:02:03
987
原创 Java语言描述:递归与分治策略之全排列问题
全排列问题为各大公司面试中的热门话题。因为难度适中,技能考察一定的算法思想,又因代码简单,不会耽误很长的时间,因而成为面试官们十分青睐的选择。本文采用分支递归策略解决全排列问题(无重复元素)。掌握好该问题也有助于理解前几篇博客中的回溯法解决排列树的问题(如,批作业调度问题)。/* * 该代码运用分治法的思想解决了对于一个任意的集合中元素的全排列问题。(本代码为方便显示用Int型 * 数组代
2015-06-07 13:59:43
874
原创 Java语言描述:分支限界法之01背包问题
问题描述:已知:有一个容量为V的背包和N件物品,第i件物品的重量是weight[i],收益是value[i]。限制:每种物品只有一件,可以选择放或者不放问题:在不超过背包容量的情况下,最多能获得多少价值或收益。/* 本代码实现了运用优先队列式分支限界法解决了01背包问题。解决问题的大致思想和前2篇博客的回溯法 * 大致相同,都属于搜索算法,不过实现方式上略有不同。对于子集树问题,
2015-06-05 17:04:17
8620
2
原创 Java语言描述:分支限界法之单源最短路径问题(全网独家)
单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。本代码的测试数据如下,算法思想和说明在下面代码的注释部分:/* * 该代码采用优先队列式的分支限界法解决了单源最短路径问题。相比贪心算法中的德杰特斯拉算法复杂度 * 有所增加,但是作为搜索算法的经典问题,该算法完美展现了优先队列在分支限界法中的应用以及广度 * 优先搜索算法的特点。该问题同样是一棵多子树的子集
2015-06-05 13:40:56
6495
原创 Java语言描述:回溯法之01背包问题(最易理解的回溯法讲解)
问题描述:已知:有一个容量为V的背包和N件物品,第i件物品的重量是weight[i],收益是cost[i]。限制:每种物品只有一件,可以选择放或者不放问题:在不超过背包容量的情况下,最多能获得多少价值或收益。/*本代码实现了用回溯法实现01背包问题。亮点之一在于右子树的剪枝函数的设计非常之巧妙。 * 在回溯开始之前,首先对于背包中的物品按照单位重量价值进行排序,方便于后面右子树的
2015-06-04 20:30:19
12470
4
原创 Java语言描述:回溯法之批处理作业调度
问题描述给定 n 个作业的集合 j = {j1, j2, ..., jn}。每一个作业 j[i] 都有两项任务分别在两台机器上完成。每一个作业必须先由机器1 处理,然后由机器2处理。作业 j[i] 需要机器 j 的处理时间为 t[j][i] ,其中i = 1, 2, ..., n, j = 1, 2。对于一个确定的作业调度,设F[j][i]是作业 i 在机器 j 上的完成处理的时间。所
2015-06-04 17:57:41
2837
原创 Java语言描述:回溯法之最优装载问题
问题描述:有一批共有 n 个集装箱要装上两艘载重量分别为 c1 和 c2 的轮船,其中集装箱 i 的重量为 w[i], 且重量之和小于(c1 + c2)。装载问题要求确定是否存在一个合理的装载方案可将这 n 个集装箱装上这两艘轮船。如果有,找出一种装载方案。例如,当n=3,c1=c2=50,且w=[10,40,40]时,可将集装箱1和集装箱2装上一艘轮船,而将集装箱3装在第二艘轮船;如果w=[
2015-06-04 14:10:20
2742
原创 Java语言描述:回溯法之最小重量机器问题
设某一机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得。设 wij 是从供应商j 处购得的部件i的重量,cij 是相应的价格。试设计一个回溯算法,给出总价格不超过d的最小重量机器设计。对于给定的机器部件重量和机器部件价格,计算总价格不超过d的最小重量机器设计。package BackTrack;public class getMinWeight { int m =
2015-06-04 12:26:39
1557
原创 最小重量机器设计问题——优先队列式分支限界法
本代码运用优先队列式分支限界法解决了最小重量机器设计问题。算法思路:对于在某一个供应商是否购买某一零件,可以将这个过程抽象化为子集树模型。该树的第i层则代表第i个零件的购买情况,每个商家j对应一棵子树。从根节点开始,对于当前讨论的节点我们将之当作扩展节点,遍历该扩展节点的所有子节点,将其中符合条件的子节点全部插入优先队列中(判断条件运用剪枝函数,下面讨论)。当遍历完后,该节点成为死节点,从优先队列中取出在当前情况下重量最小的节点继续向下进行迭代,直到到达某叶子节点后,记录下当前情况下的最小重量,然后继续
2015-05-30 17:09:28
11160
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人