整数分解(Integer 
factorization)又叫质因数分解(质因子分解)是指把一个正整数写成几个素数的乘积。最简单的算法是,从2到N进行试除,能整除的时候就说明找到了一个新的因子,而这个过程中由于是从较小的数開始除起所以必然会先找到能整除的最小的素数。#include 
void pd(in...
                            
                            
                                分类:
其他好文   时间:
2014-05-27 00:38:50   
                                阅读次数:
310
                             
                    
                        
                            
                            
                                出题:要求用递归将一个栈结构的元素内外颠倒;分析:本题再次说明系统栈是程序员最好的帮手,但递归度较高所以时间复杂度较大,可以使用空间换时间的方法(额外数组保存栈元素,然后逆向压入);第一层递归(清空栈元素,并使用系统栈保存):[1,2,3,4,5],栈顶元素为1,将1弹出之后,递归处理[2,3,4,...
                            
                            
                                分类:
其他好文   时间:
2014-05-27 00:33:08   
                                阅读次数:
445
                             
                    
                        
                            
                            
                                看到这种填合适的运算符之类的题目,第一感觉就是用dfs来枚举递归。
但邮箱道题目算法设计里面那么大的数据,想到有可能会超时。
用最直白的简单的方法dfs一遍后交上,超时。
——需要判重和边界结束条件。
在所有能剪断的地方痛下狠手,狂加特判+return;
然后就炒鸡快了
#include
#include
#include
#define ADD 32000
using namespa...
                            
                            
                                分类:
其他好文   时间:
2014-05-23 02:06:42   
                                阅读次数:
285
                             
                    
                        
                            
                            
                                【题目】
Given a collection of numbers, return all possible permutations.
For example,
[1,2,3] have the following permutations:
[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1].
【题意】
         给定一个数组,生成所有的全排列
【思路】
       
          递归,类DFS...
                            
                            
                                分类:
其他好文   时间:
2014-05-23 01:08:26   
                                阅读次数:
194
                             
                    
                        
                            
                            
                                如果p1和p2(p1 p2)均为素数,且任意整数p(p1 p p2)都不是素数,则说素数p1与p2是相邻的,并定义它们之间的距离为d=
 p2 - p1。给定正整数L和U,求出区间[L,
U]中距离最小的两个相邻素数C1与C2和距离最大的两个相邻素数D1与D2。
例如,L=2,U=17时,C1=2,C2=3,D1=7,D2=11。
import java.util.ArrayLis...
                            
                            
                                分类:
其他好文   时间:
2014-05-23 00:56:16   
                                阅读次数:
250
                             
                    
                        
                            
                            
                                二叉树是一种特殊的树。二叉树的特点是每个结点最多有两个儿子,左边的叫做左儿子,右边的叫做右儿子,或者说每个结点最多有两棵子树。更加严格的递归定义是:二叉树要么为空,要么由根结点、左子树和右子树组成,而左子树和右子树分别是一棵二叉树。
 下面这棵树就是一棵二叉树。
 
        二叉树的使用范围最广,一棵多叉树也可以转化为二叉树,因此我们将着重讲解二叉树。
二叉树中还有连两...
                            
                            
                                分类:
其他好文   时间:
2014-05-23 00:11:28   
                                阅读次数:
301
                             
                    
                        
                            
                            
                                注意:1、仅根据前序和后序无法构建唯一的二叉树;2、二叉树前序遍历,第一个数字总是树的根节点的值;3、中序遍历中,根节点的值在序列的中间,左子树的值子在根节点的值得左边,右字树的值在根节点的值得右边;4、思路:递归...
                            
                            
                                分类:
其他好文   时间:
2014-05-22 23:56:14   
                                阅读次数:
408
                             
                    
                        
                            
                            
                                在DAG中DFS中顶点的出栈顺序即逆拓扑序。
def topological_sort( graph ):
    is_visit = dict( ( node, False ) for node in graph )
    li = []
    def dfs( graph, start_node ):
        
        for end_node in...
                            
                            
                                分类:
编程语言   时间:
2014-05-22 23:12:10   
                                阅读次数:
487
                             
                    
                        
                            
                            
                                快速排序是一个经常使用的算法,由于每次用的时候,都感觉没有理解清楚,特写一篇文章记录一下。
算法介绍
快速排序有点类似有冒泡排序,冒泡排序从相邻的两个元素比较,小的在左边,大的在右边,这个算法很容易理解。而快速排序它相当于是在一头一尾两边分别排序比较,比较的对象是当前元素值,和一个选定的key值,主题的思想就是通过跟key值比较,把大于key的值放在右边,小于的放在左边这样就完成了...
                            
                            
                                分类:
其他好文   时间:
2014-05-22 17:06:52   
                                阅读次数:
255