python
文章平均质量分 86
in_han
这个作者很懒,什么都没留下…
展开
-
python 树形结构
1. 使用dictionary 实现二叉排序树python 代码:#!/usr/bin/python# -*- coding: utf-8 -*-# python 二叉树def create_btree( e ): root = {"v":e[0], "left":None, "right":None} for i in e[1:-1]: inser原创 2013-09-07 10:15:30 · 2863 阅读 · 0 评论 -
KMP
串的模式匹配算法:Index( S, T, pos ) 1. 常规算法:顺序比较,遇到不匹配的情况则回退。python 代码:(注意回退时回退步长)#!/usr/bin/python# -*- coding: utf-8 -*-# 算法:KMP# 传统算法, 返回template在 source中第pos个字符之后的位置def Index( source, t原创 2013-09-06 22:01:02 · 598 阅读 · 0 评论 -
分枝界限法
回溯法:求出解空间中满足约束条件的所有解。分支界限法:找出满足约束条件的一个解。搜索方式:回溯法使用深度优先的方式,而分支界限法使用广度优先或最小耗费的方式搜索解空间。1. 单源最短路径问题:问题描述:在有向图中,求出源顶点 s 到 目的顶点的最短路径。解决办法:使用优先队列式的分支界定法。算法描述: 1. 使用最小堆MinHeap来存储活结点列表原创 2013-09-07 16:46:05 · 1860 阅读 · 0 评论 -
线段树的应用
定义线段树在区间[i, j] 上如下: 第一个节点维护着区间 [i, j] 的信息。 if i应用范围:对一个区间整体进行操作,如寻找最大(小)值,整体加线段树有如下应用:1. Range Minimum Query( RMQ )问题: 参见:http://blog.csdn.net/in_han/article/details/11493原创 2013-09-10 22:55:33 · 801 阅读 · 0 评论 -
Range Minimum Query( RMQ )
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j方法一:蛮力搜索,时间时间复杂度 O( n )。方法二:O(N^2), O(1)利用动态规划进行预处理,计算出M:M[ i ][ j-1 ] 为 i 到 j-1 最小值索引,则M[i][j] = A[j] 方法三:O(NlogN), O(原创 2013-09-10 00:50:38 · 665 阅读 · 0 评论