
算法
文章平均质量分 65
cattycat
喜欢电影,NBA
努力学习技术
展开
-
树状数组求逆序数
逆序数就是数中各位在它前面有多少个数比它大,求出这些元素个数之和。今天看了个树状数组,可以很好的解决这个问题,普通方法需要O(N^2)复杂度,用树状数组只需要O(NlongN)原创 2010-06-01 22:37:00 · 23197 阅读 · 2 评论 -
并查集简单应用
在一些应用问题中,我们需要划分n个不同的元素成若干组,每一组的元素构成一个集合。这种问题的一个解决办法是,在开始时,让每个元素自成一个单元素集合,然后按一定顺序将属于同一组的元素所在的集合合并。其间要反复用到查找一个元素在哪一个集合的运算。适合于描述这类问题的抽象数据类型称为并查集。从一个百度笔试算法谈起。原创 2010-06-05 11:00:00 · 2093 阅读 · 0 评论 -
下一排列组合的算法
产生下一排列组合的算法,参考STL的算法实现的原创 2010-06-19 15:20:00 · 1338 阅读 · 0 评论 -
找硬币问题
<br />算法导论上第16-1问题<br /> <br />考虑用最少的硬币数找n分钱的问题,假设每个硬币的值都是整数。<br /> <br />先证明问题具有最优子结构。假设对找n分前有最优解,而且最优解中使用了面值c的硬币,最优解使用了k个硬币。那么,这个最优解包含了对于找n-c分钱的最优解。显然,n-c分钱中使用了k-1个硬币。如果n-c分钱还有一个解使用了比k-1少的硬币,那么使用这个解可以为找n分钱产生小于k个硬币的解。与假设矛盾。<br /> <br />对于有些情况下,贪心算法可能不能产生最原创 2010-08-15 10:56:00 · 12648 阅读 · 4 评论 -
一道编程之美上的问题-腾讯的笔试题目:求数组的部分乘积
原题大概是:两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i];要求:1.不准用除法运算2.除了循环计数值,a[N],b[N]外,不准再用其他任何变量(包括局部变量,全局变量等)3.满足时间复杂度O(n),空间复杂度O(1) 在编程之美上讨论的解法中,没有空间复杂度的要求。原创 2012-04-07 23:22:10 · 1426 阅读 · 0 评论 -
一个西瓜 4刀最多多少块
看到一个问题比较有意思,就记录下来。 要求:1. 西瓜必须是凸几何形状。(毕竟咋没有见过凹形(如:锯齿形之类)的西瓜)2. 刀必须是平面。3. 走刀路线必须为直线。 其实是平面划分空间问题。即4个平面将西瓜的空间最多分多少个。有人讨论是2^4=16. 因为 1刀2块,2刀4块,3刀8块比较容易想。其实这个切最多的情况是:想象球体中一个正四面体,注意正四面体的顶点原创 2012-04-17 17:09:39 · 3837 阅读 · 1 评论