
algorithm
文章平均质量分 52
ustcqi
这个作者很懒,什么都没留下…
展开
-
最长公共子序列LCS
长时间没有写动态规划的程序了,离开poj已有时日,貌似很久远的事了,称算法课程,把以前的复习一下,挑个软柿子吃一吃#include#include#include#includeusing namespace std;const int N = 1000;int dp[N][N];#define max(a, b)(a>b ? a:b)int LSC(string a,原创 2012-11-04 00:41:54 · 793 阅读 · 0 评论 -
分治算法总结
一.分治算法的基本思想:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同,递归的解这些子问题.然后将各个子问题的解合并得到原问题的解.T(n)表示一个规模为n的问题的运行时间,(1)如果规模足够小(可以直接求解),在此处n(2)假设我们把原问题分解成a个子问题,每一个的大小是原问题的1/b(对于归并排序a和b都是2,但在许多分治法中a!=b,原创 2013-01-04 22:20:35 · 1738 阅读 · 0 评论 -
二叉查找树与红黑树概念性质及操作时间复杂度
操作名(h树高)二叉查找数红黑树查找O(h)O(lgn)查最大/小元素O(h)O(lgn)前驱/后继O(h)O(lgn)插入O(h)O(lgn)删除O(h)原创 2013-01-05 16:58:43 · 4811 阅读 · 0 评论 -
动态规划几个经典例子总结
1.了解动态规划 写的不是特别详细,凑合看吧,嘿嘿, 快要考试了,攒人品....动态规划的核心思想就是避免子问题重复计算,采用用空间换取时间的方法提高算法效率,比如用递归实现的斐波那契数与用数组记录子问题实现的递推算法就是最简单的动态规划思想,用表的形式记录子问题,防止重复求解,类似的例子也使用与其他递归公式,难点在于最优子结构性质的发现与证明,通常找出最优子结构后都能写出递推表达式原创 2013-01-03 21:34:46 · 4287 阅读 · 0 评论 -
维基百科中动态规划的部分讲解
Dynamic programming in computer programmingThere are two key attributes that a problem must have in order for dynamic programming to be applicable: optimal substructure and overlapping subpr转载 2013-01-06 21:35:11 · 954 阅读 · 0 评论 -
平摊分析
平摊分析 首先解释一下平摊分析的目的,之所以会有平摊分析是因为在很多算法或数据结构操作中我们直观的或用一般的方法计算出来的时间上界不够紧凑(也就是估大了),这是因为在一系列的数据结构操作中,有的操作消耗时间大有的消耗时间小,因此提出平摊分析技术计算所有数据结构操作后的平均时间代价以提高算法时间复杂度的紧凑度.另一方面,由于估计算法时间复杂度我们都要估计一个上界,因此无论是一般的方法还是利用平摊转载 2013-01-06 20:36:07 · 2955 阅读 · 1 评论 -
Python写的BloomFilter
由于Python没有内建的bitset数据结构,不过有需要自己安装的BitVector,用起来还是很方便的安装BitVector过程同Python安装第三方模块的方法: 命令行进入目录后,输入 python setup.py install 不过由于是在windows上做的实验,安装后只能在那个目录下使用BitVector这点有点迷惑,待解决...下面是我根据java版的Bloom原创 2013-01-24 13:19:33 · 5876 阅读 · 0 评论 -
Python版图的深度/广度搜索
#_*_coding:utf_8_import sysclass Graph(): def __init__(self): visited = [] edges = [[]] queue = [] V = 0 E = 0 def initGraph(self):原创 2013-01-14 22:17:27 · 1273 阅读 · 0 评论 -
二分图最大匹配
#includeusing namespace std;const int maxn = 201;int g[maxn][maxn];int link[maxn];int vis[maxn];int n, m;/*dfs 找增广路径*/bool dfs(int u){ for(int v=1; v<=m; v++) { if(g[u][v] &&原创 2013-01-15 21:51:23 · 484 阅读 · 0 评论 -
Code is to be happy
所有考试都结束了,静下来看看书,想到前几天想统计一下写过的代码行数,今天下午用了点时间弄了一下,代码写的不是很好,凑合看看吧,日后再整理一下.#_*_coding:utf_8_import osimport globfilefd = open('out.txt', 'w')def countFileLines(filename): count = 0 try:原创 2013-01-15 15:51:27 · 780 阅读 · 0 评论 -
BloomFilter
不知廉耻的发了这篇日志, 其实从别人那里借鉴过来的,原文记不得了,写的不错,表示感谢,下面是我用java实现的代码,哈希函数没有改变,可以多试几个哈希函数,也不给分析了.下面是原文链接. http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.html下面是用BloomFilter的常见场合1)已知某个文件内包含一些电话号码,每个号码原创 2013-01-17 23:52:29 · 752 阅读 · 0 评论 -
教你如何迅速秒杀掉99%的海量数据处理面试题
教你如何迅速秒杀掉:99%的海量数据处理面试题作者:July出处:结构之法算法之道blog前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。转载 2013-01-06 11:21:17 · 854 阅读 · 0 评论 -
递归式求解-主定理
1.主定理:设a>=1和b>1为常数,设f(n)为一函数,T(n)由递归式对非负整数定义,其中n/b指下取整或上取整.那么T(n)可能有如下的渐进界:(1)若对于某常数 ε>0,有,则;(2)若.则;(3)若对于某常数 ε>0,有,且某常数 c,则2.主定理的使用方法.由主定理的三种情况可以看出,每一种情况都要比较 f(n) 与进行比较.(求复杂度时,通原创 2013-01-05 16:22:35 · 7536 阅读 · 1 评论 -
1-n之间的整数之和为指定数sum问题(百度之星往年试题)
#include#include#define maxn 100int used[maxn];int ans[maxn];void output(int dep){ int i = 0; for(i=1; i<dep; i++) { printf("%d ", ans[i]); } printf("\n");}void原创 2012-11-03 20:25:15 · 980 阅读 · 0 评论 -
0-1背包的动态规划解法
/************************************************************************\n个物品,物品i 重量wi>0 价值为vi 背包最大能W goal->求不超过容量的最大价值Item Value Weight1 1 12 6 23 18 54 22 65原创 2012-11-05 19:07:26 · 624 阅读 · 0 评论 -
最长递增子序列O(n^2)版
#include#includeusing namespace std;#define max(a, b)(a>b ? a:b)int solve(int *num, int n){ int *dp = new int[n]; memset(dp, 1, sizeof(dp)); for(int l=0; l<n; l++) dp[l] = 1; for(int i=0;原创 2012-11-04 00:04:40 · 787 阅读 · 0 评论 -
8*8的棋盘的二进制表示法
#include#include/*8*8的棋盘,用8未表示,前四位表示列,后四位表示行*/unsigned char binary_row = 0x07; /*求与后只有行*/unsigned char binary_col = 0x70; /*求与后只有列*/bool isSameRow(unsigned char a, unsigned char b){ a = a & bi原创 2012-12-25 17:37:46 · 1062 阅读 · 0 评论 -
计算一个字中1的个数(MIT牛人算法)
int bitcount(unsigned int n){ unsigned int tmp; tmp = n - ((n >> 1) & 033333333333) - ((n >> 2) & 011111111111); return ((tmp + (tmp >> 3)) & 030707070707)%63;}虽然不知道怎么个意思,留原创 2012-12-25 17:40:34 · 1311 阅读 · 2 评论 -
C++哈希表实现
#include#include#include#define HASHLENGTH 10struct node{ int data; struct node *next;};struct node hash[HASHLENGTH];typedef struct node * HashNode;int Hash(int k){ return k%HASHLENGTH原创 2012-12-18 12:15:38 · 977 阅读 · 0 评论 -
二项堆与斐波那契堆各个操作时间复杂度
过程二项堆斐波那契堆MAKE_HEAPΘ(1)Θ(1)INSERTΩ(lgn)Θ(1)MINIMUMΩ(lgn)Θ(1)EXTRACT-MINΘ(lgn)O(lgn)UNION原创 2013-01-05 17:10:34 · 5169 阅读 · 0 评论 -
算法导论-插入排序,归并排序,快速排序总结
插入排序合并排序快速排序最佳情况时间复杂度О(n)О(nlgn)О(nlgn)平均情况时间复杂度О(n^2)О(nlgn)О(nlgn)最坏情况时间复杂度О(n^2)О(nlgn)О(n^2)原创 2013-01-05 17:35:42 · 782 阅读 · 0 评论 -
网络流--最大流
话说上次写最大流还是在大三,很显然自从考研开始到现在一直都没敲过网络流的代码,算法课讲到最大流,重新写一遍#include#include#includeusing namespace std;const int MAXN = 201;int cap[MAXN][MAXN]; //残留网络,初始为原图int flow[MAXN][MAXN];int vernum;原创 2012-12-23 15:24:26 · 582 阅读 · 0 评论 -
Python建最小堆
直接贴代码,比较好懂#_*_coding:utf_8_'''建立一个最小堆'''import heapqimport randomclass MyHeap(): def __init__(self): self.n = 0 self.list = [] def buildHeap(self):原创 2013-01-15 13:31:21 · 1700 阅读 · 0 评论