由斐波拉契数列的公式:f(n)=f(n-1)+f(n-2),如果使用递归方法,非常的简短易懂,但是重复计算太多,时间复杂度成指数形势增长。由矩阵乘法可以得到:又于是有剩下的就是计算矩阵的过程了。
分类:
其他好文 时间:
2014-07-03 06:09:18
阅读次数:
183
"Ran out of trampolines of type 0/1/2" 运行时间错误通常出现在使用大量递归泛型时。要看到这个错误需要连接着设备直接将项目build到设备里运行调试才能看到,您可以暗示 AOT 编译器分配更多type 0、type 1 或 type 2 trampolines。此...
分类:
移动开发 时间:
2014-07-02 21:15:05
阅读次数:
573
(一)归并排序
分析:
(1)划分问题:把序列分成元素个数尽量相等的两半。
(2)递归求解:把两半元素分别排序。
(3)合并问题:把两个有序表合并成一个。(每次只需要把两个序列的最小元素加以比较,删除其中的较小元素并加入合并后的新表)
#include
using namespace std;
const int MAXN = 1000;
int A[MAXN], T[MAXN];
...
分类:
其他好文 时间:
2014-07-02 09:22:26
阅读次数:
243
题目,求一个连续的数组,最大连续和。
(一)O(n3)算法:
利用穷举法的思想,这种方法的效率最差。
代码如下:
#include
#include
#include
#include
using namespace std;
const int MAXN = 1000;
int A[MAXN], n;
int maxsum(int *A, int n) {
int beat...
分类:
其他好文 时间:
2014-07-02 09:15:50
阅读次数:
349
这个是约瑟夫的另一个变型,变为总共有2*k个人,先是K个好人后是k个坏人,要求前k次都要杀坏人,即在杀掉第一个好人之前就要把所有的坏人都杀光,所以需要我们求出满足这个条件的最小的m值;
由约瑟夫的递归模型可以发现,我们因为他的递归是从最后杀的人递归到原有的人数,所以我们可以吧顺序反过来,等价于最后杀掉k个坏人,再杀好人,这样在递归的时候就是先知道起始位置(先杀的人),这样就能迭代,由有好人...
分类:
其他好文 时间:
2014-07-02 08:55:40
阅读次数:
188
以下知识点转自:点击打开原文链接
今天拿起手要用C++写个小工具,从指定的目录递归遍历文件,然后做一下处理。又翻了一下boost的filesystem库。小结一下,希望能加深印象,免得下次又要查看文档。
1. path对象就是一个跨平台的路径对象。有许多方法访问路径的各个部分,也用它的iterator迭代路径中的各个部分;
path构造目录结构的时候使用“/”运算符,非常直...
分类:
其他好文 时间:
2014-07-02 07:06:26
阅读次数:
413
基本枚举、贪心、递归、分治、递推、模拟STL(pair、vector、set、map、queue、string、algorithm)构造、位运算、常数优化数据结构队列、堆、栈、链表排序(插入、冒泡、快速、归并、堆、桶、基数)二分查找、散列表并查集、哈夫曼树排序二叉树、左偏树、平衡树(Splay/Tr...
分类:
其他好文 时间:
2014-07-01 19:09:02
阅读次数:
193
多重背包,本题不需要二分优化。相对简单点。因为重复数十分小,小于10;
而增加一个限制每种材料的高度做法,如果使用逆向填表,那么只需要从这个高度往小递归填表就可以了。
还有就是注意要排序,以限制高度为标准从小到大排序,否则答案错误的。
#include
#include
#include
using std::sort;
const int MAX_K = 401;
const in...
分类:
其他好文 时间:
2014-07-01 16:08:42
阅读次数:
213
二叉查找树C语言实现
1. 二叉查找树的定义:
左子树不为空的时候,左子树的结点值小于根节点,右子树不为空时,右子树的结点值大于根节点,左右子树分别为二叉查找树
2. 二叉查找树的最左边的结点即为最小值,要查找最小值,只需遍历左子树的结点直到为空为止,同理,最右边的结点结尾最大值,要查找最大值,只需遍历右子树的结点直到为空为止。二叉查找树的插入查找和删除都是通过递归的方式...
分类:
编程语言 时间:
2014-07-01 07:33:16
阅读次数:
293