
算法与数据结构
文章平均质量分 62
superguang9527
这个作者很懒,什么都没留下…
展开
-
动态规划和分治法的比较之一个疑问
一个问题:矩阵链相乘的问题,比如 A1 A2 A3 A4 A5 A6六个矩阵,要选择一个最小代价相乘次序,要是按二分法的话,从中间分成两个子链,然后转化为分成求两个子链的最优化乘次序的问题就是不正确的,不能保证优化次序是跨界两个子链之间的,比如最优次序为 (A1((A2((A3A4)A5))A6))就不能用二分法来做,而是应该设这个最佳分割点为k,然后遍历A1-A6,穷举来寻找k,这个过程生成原创 2009-07-24 10:31:00 · 1310 阅读 · 0 评论 -
矩阵链乘法动态规划程序
源程序为 算法导论 动态规划一章 不贴出 这里仅对此程序进行分析 比如有三个矩阵 A1 a2 a3 10X100 100X5 5X50 P0Xp1 p1Xp2 p2Xp3N=3 首先m[1,1] m[2,2] m[3,3]=0 L=2 i=1 j=2M[1,2]=∞K=1 to 1q=M[1,原创 2009-07-25 12:29:00 · 431 阅读 · 0 评论 -
二分查找的变形应用
算法理解获取数组中第一个空闲的块比如 array 为 1111111…111000000…0问题就变成 寻找array中第一个出现的0算法一:遍历数组找到第一个0 O(n)算法二:二分查找 二分查找成功条件:array[i]=t; 失败条件:l>u对于本问题来说,成功条件则是array[i]=0 array[i-1]=1,失败条件要提前测试 全1的情况stati原创 2009-07-30 16:10:00 · 720 阅读 · 1 评论 -
nstl construct 理解
/*从芯片构造nstl表,应该已经初始化,否则用NstlInitNandIc 普通前向没有链的,都标记为头 普通后向没有链的,都标记为尾 正常的块,前向、后向表中对应,空闲块只需要前向关系 ffp平时0xFF,正常可用块,ffp=0,正常有数据块指向正确位置 逻辑块指向链头 之后前向表为头位置的物理块转逻辑翻译到逻辑转物理 前向块头指向同一个逻辑的,格式化掉短的(因此要先构造前后链表原创 2009-08-01 15:43:00 · 355 阅读 · 0 评论 -
求数组的子数组子和的max 动态规划程序
求数组的子数组子和的max 动态规划程序 时间复杂O(n) 可以返回最大子数组位置#include #include int maxv(int x,int y){ return (x>y)?x:y; }int main(){ int array[4]={-9,-2,-3,-5}; int i,j; int flag[4][4]={0}; int flagcount=2; in原创 2009-08-06 10:00:00 · 319 阅读 · 0 评论 -
程序加速之查表法
查表法是通常采用的一种以空间(内存空间)换时间(运行时间)的程序加速方法,基本过程是把需要经常查询数据库或复杂浮点计算的结果保存到一个数据结构中(数组最为常见),以后只要根据条件取出相应的数据即可。比如把1-360度的正切值保存到数组中,当输入45度时,只需取出第45个元素。这样就节约了不必要的计算时间。对于作为基本定义使用的表,数据不经常改变的数据表也可以使用这种方法。注意:1.表的数据原创 2009-08-27 13:58:00 · 3057 阅读 · 0 评论 -
高效大小写转换
汇编中有一种非常高效的方法,即位运算。 大写 二进制 小写 二进制 A 01000001 a 01100001 B 01000010 b 01100010 C 01000011 c 01100011 D 01000100 d 01100100 看出来什么吗? 大小写只有第6位不一样。 故只要改变第6位即可。 大写--》小写:or(|转载 2009-08-27 17:07:00 · 639 阅读 · 0 评论 -
COM本质论读书笔记1
COM本质论读书笔记第一章1.C++类库以源代码形式分发,并且客户把类库编译链接入自己的程序中 缺点:多个可执行文件中有重复的类库二进制代码,升级要编译所有的exe,完全不支持模块化2.提供DLL,让app在用到时动态加载 缺点:1)c++缺少二进制标准,每个厂商的编译器对于函数名变更都有自己一套方案,还有异常方案。 2)由于在原创 2009-09-05 12:02:00 · 586 阅读 · 0 评论