`
文章列表
1. 问题描述: 输出自然数1到n的所有不重复的排列,即n的全排列。 2. 问题分析:    (1) 解空间: n的全排列是一组n元一维向量(x1, x2, x3, ... , xn),搜索空间是:1<=xi<=n i=1,2,3,...,n       (2) 约束条件: xi互不相同。技巧:采用"数组记录状态信息", 设置n个元素的一维数组d,其中的n个元素用来记录数据 1~n的使用情况,已使用置1,未使用置0 3. Java代码: package boke; /** * 回溯法 * * @since jdk1.6 * @au ...
1. 问题描述: 找n个数中r个数的组合 2. 问题分析:    (1) 问题的解空间为一组r元一维向量(a1, a2, a3, ...,ar), 1<=ai<=n, 1<=i<=r用一维数组a存储正在搜索的向量。    (2) 例子。 以n=5, r=3为例:             5  4  3    ...
不加一句注解,请看下面内容:你会想到JAVA多态的什么特性? 1. 父类: package com.maozj.javatnk.duotai; import java.util.ArrayList; import java.util.Map; public class ParentObj { public void doWork(ArrayList list) { System.out.println("ParentObj doWork..."); } public void doSport(Map map) { System.o ...
1. 尽早释放无用对象的引用。    A a = new A();    ...    a = null; 2. 尽量少使用finalize函数。finalize函数会加大GC的工作量。 3. 如果需要经常使用到的图片,可以使用soft应用类型。它可以尽可能将图片保存到内存中,供程序调用,而不引起OutOfMemory。 4. 一些复杂数据类型,如数组、树、图、链表、集合等数据结构,这些数据结构对GC来说,回收更为复杂。 另外注意一些全局变量和一些静态变量。这些变量往往容易引起悬挂对象,造成内存浪费。 5. 尽量避免在类的默认构造器中创建、初始化大量的对象。 6. 尽量避免强制系统做垃 ...
1. 只有非private方法才可以被覆盖 2. 普通方法是多态的,静态方法和域不具有多态性。
1. 问题描述    给定n种物品和一背包。物品i的重量是wi,其价值为pi,背包的容量为c。问:应该如何选择装入背包的物品,使得装入 背包中物品的总价值最大? 2. 问题分析    在选择装入背包的物品时,对每种物品i只有两种选择,即装入背包或不装入背包。该问题是子集选取问题。因此解空间可用子集书 来表示。    在搜索解空间树时,只要其左儿子结点是一个可行结点,搜索就进入其左子树。当右子树有可能包含最优解时才进入右子树搜索。 否则将右子树剪去。    设r是当前剩余物品价值总和;cp是当前价值;bestp是当前最优价值。当cp+r <= bestp时,可剪去右子树。    ...
1. 回溯法基本思想    回溯法是在包含问题的所有解得解空间树(或森林)中,按照深度优先的策略,从根结点出发搜索解空间树。 算法搜索至解空间树的任一结点时,总是先判断该结点是否满足问题的约束条件。如果满足进入该子树,继续 按照深度优先的策略进行搜索。否则,不去搜索以该结点为根的子树,而是逐层向其祖先结点回溯。    回溯法在用来求解问题的所有解时,要回溯到根,且根结点的所有可行的子树都已被搜索遍才结束。而回溯法 在用来求解问题的任一解时,只要搜索到问题的一个解就可以结束。适用于解决一些最优化问题。 2. 算法设计过程 (1) 确定问题的解空间         应用回溯法解决问题时,首 ...
1. 递归算法解题步骤 (1) 分析问题、寻找递归关系。找出大规模问题和小规模问题的关系。 (2) 找出停止条件,控制递归。 (3) 设计函数、确定参数。 2. 问题描述:    整数的分划问题。    如,对于正整数n=6,可以分划为:    6    5+1    4+2, 4+1+1    3+3, 3+2+1, 3+1+1+1    2+2+2, 2+2+1+1, 2+1+1+1+1    1+1+1+1+1+1+1    现在的问题是,对于给定的正整数n,编写算法计算出其分划得数目。 3. 问题分析和递归关系建立    从上面n=6的实际例子可以看出,很难找到大规模问题P( ...
来源: 网络转载 代码编写规范目的:能够在编码过程中实现规范化,为以后的程序开发中养成良好的行为习惯。 代码编写规范使用范围:J2EE项目开发。 1.包命名规范: 目的:包的命名规范应当体现出项目资源良好的划分 。 ...
由于代码比较清晰,逻辑简单,所以没有多加说明。 1. 栈元素定义: /** * create on 2010-05-19 TODO: 栈元素 * * @author 毛正吉 * @version 1.0 * */ class Node { protected Object data; protected Node next; protected Node() { data = null; next = null; } protected Node(Object _data) { data = _data; next = null; } } ...
1. 原理描述:    设图G的初始状态是所有顶点均为访问过。以G中任选一顶点V为起点,则描述为:首先访问出发点V, 接着依次访问V的所有邻接点W1,W2,...,Wi,然后再依次访问与W1,W2,...,Wi邻接的所有未曾访问过的 顶点。依次类推,直到图中所有和起点V有路径相同的顶点都已访问为止。此时从V开始搜索过程结束。 2. 算法设计基本步骤:    (1) 确定图的存储方式。    (2) 设计搜索过程中的操作,其中包括为输出问题解而进行的存储操作。    (3) 输出问题的解空间。 3. 一种实现:求从一个城市到另一个城市间经过的城市最少的路线。 package com.maoz ...
1.原理描述:   给定图G的初始状态是所有顶点均未曾访问过,在G中任选一顶点V为初始出发点(源点、根结点)。 则描述如下:首先访问出发点V,并将其标记为已访问过;然后依次从V出发搜索V的每个邻接点(子结点)W。 若W未曾访问过,则以W为新的出发点继续进行深度优先遍历,直到图中所有和源点V有路径相同的顶点(从源点 可达的顶点)均已被访问为止。若此图中仍有未访问的顶点,则另选一个尚未访问的顶点作为新的源点重复 上述过程,直到图中所有顶点均已被访问为止。 2.算法描述   (1) 确定图的存储方式。   (2) 设计搜索过程中的操作,其中包括为输出问题解而进行的存储操作。   (3) 搜索到问题的 ...
展开树状记录的程序很多是采用递归算法。我們知道,递归的方法逻辑比较简单,实际操作起来比较容易。但是递归有一个最大的缺点就是占用资源太多,速度太慢。如果在互联网的"论坛"上采用此种方法,在表记录很多的情况下将是一个非常严重的问题。我们可以用堆栈来解决递归效率低下占用资源的问题。 一、表结构(article)   tpId   int       本记录ID号   tpPid  int       父记录ID号   title  varchar   贴子标题   author varchar   贴子作者   datetime date    发贴日期时间     ...
1. 通过init方法来缓存一些静态数据,诸如数据库连接,预初始化数据,前台加载。 2. 用print()方法取代pringln()方法。自己想想就知道了。 3. 用ServletOutputStream取代PringWriter。自己想想就知道了。 4. 更好的创建PrintWriter对象的设计:     ByteArrayOutputStream byteArray = new ByteArrayOutputStream(1024);     PrintWriter out = new PrintWriter(byteArray); 5. 采用部分输出的方式向客户端输出数据。以减少时间开销 ...

低效的where 1=1

    也许很多人在开发多条件查询或模糊查询的时候,为保证不管选择哪种过滤条件总保证查询条件为true,于是在where子句后选择1=1或者0=0技巧来满足模糊查询。当然这的确对开发人员来说是一个不错的技巧。于是我在Mysql中通过上千万条的数据测试发现很耗性能。即便是建了常用字段的索引(排序)也没有作用,足以确定1=1很低效,大数据量很耗性能。   select * from t_user where 1=1    因为添加了"1=1"的过滤条件以后数据库系统无法使用索引等优化查询策略,数据库系统将会被迫对每行数据进行扫描(也就是全表扫描)来比较此行是否满足顾虑条件, ...
Global site tag (gtag.js) - Google Analytics