n扩大两倍,时间扩大了2w倍。 时间复杂度非常大!指数级! 大量的重复计算。能不能只算一次呢? 通过全局变量的数组,记录计算过的数字。 空间换时间。 记忆化搜索 原来 记忆化搜索和递归都是,自上而下的解决问题。 假设基本问题已经解决。 递推公式。 动态规划其实比递归更快,因为减少了函数的调用,并且m ...
分类:
其他好文 时间:
2018-07-01 15:51:00
阅读次数:
136
空间管理方法主要分为两类:静态的和动态的。顾名思义,静态空间管理即是在向量生命期内,其内部数组所占物理空间的容量不允许增加,这种策略既拘泥固化且空间管理效率底下,因此常采取动态空间管理策略,具体方法是使向量可扩充。 可扩充向量既能够在空间不足达到上溢临界点时扩充向量空间,同时能够在空间需求不甚强烈, ...
分类:
其他好文 时间:
2018-06-17 22:27:45
阅读次数:
270
1.知识点 三步走:申请,释放,指针置空。 1.1malloc、free函数 在C语言中内存malloc函数申请动态空间,以下展示其基本用法: (1)动态分配的空间来自队空间,而指针本身作为局部变量存储在栈空间中。 (2)malloc有时候也可能申请空间失败,这时返回NULL,故需要对其进行判断。 ...
分类:
编程语言 时间:
2018-06-17 19:50:05
阅读次数:
173
iterator iterator模式:提供一种方法,使之能依次访问容器内的各个元素,而又不暴露该聚合物内部的表述方式。 STL的中心思想是将算法与数据结构分离,彼此独立设计,最后在用iterator将他们结合在一起,获得最大的适配性。 vector 设计理念 vector是动态空间,随着元素的加入 ...
分类:
编程语言 时间:
2018-06-16 20:02:47
阅读次数:
181
1、vector容器 vector的数据安排以及操作方式,与数组类似。俩这唯一的区别就是空间的运用灵活性。数组是静态空间,一旦配置了就不能改变,vector是动态数组。在堆上分配内存。vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间容纳新的元素当前大小实惠再分配内存,这个大大影响了 ...
分类:
其他好文 时间:
2018-05-25 00:15:38
阅读次数:
187
概念: 数组可以看成是多个相同类型数据的集合, 对这些数据的统一管理 数组的变量是引用类型, 数组也本身也是个对象, 数组中的每个元素相当于该对象的成员变量 数组的元素可以是任何的数据类型, 包括基本数据类型和引用类型 声明方式: 类型[ ] 变量名 = new 类型[长度] 一般写这种 或者 类型 ...
分类:
编程语言 时间:
2018-04-27 18:06:58
阅读次数:
140
无论在空间的利用上还是原理的简介,使用空间换取时间的代价是必须的! 申请一定量的动态空间,double也是有可能!实际会有许多的问题。 时间复杂度,计算方法如下!因为每次比较都为( k*n/2 )+l*n/4..............如下进行。 一开始的正向分析:考虑如下进行,使用共有log2(n ...
分类:
编程语言 时间:
2017-10-01 13:39:14
阅读次数:
258
1、什么是空间配置器? 空间配置器负责空间配置与管理。配置器是一个实现了动态空间配置、空间管理、空间释放的class template。以内存池方式实现小块内存管理分配。关于内存池概念可以点击:内存池。 2、STL空间配置器产生的缘由 在软件开发,程序设计中,我们不免因为程序需求,使用很多的小块内存 ...
分类:
其他好文 时间:
2017-08-31 14:24:20
阅读次数:
165
从类CCmdTarget派生出绝大多数MFC中的类,其层次结构如下图: 从根类Cobject层层派生出绝大多数MFC中的类,层次结构如下图: MFC中重点类: CObject类是MFC的绝大部分类的基类。该类完成动态空间的分配与回收,支持一般的对象诊断、运行时类型标识,出错信息处理和文档序列化等。 ...
分类:
编程语言 时间:
2017-07-07 11:39:33
阅读次数:
290
在C语言中的动态分配和释放内存的函数是malloc calloc 和 free , 而在C++中要用 new new[] delete delete[] 来申请动态空间和释放空间。 注意:的是new、new[]、delete和delete[]是操作符,而非函数;new和delete也是C++的关键字 ...
分类:
编程语言 时间:
2017-06-04 12:55:20
阅读次数:
102