上一页 1 ··· 3 4 5 6 7 8 下一页
摘要: 图是一种重要的数据结构,可以用来描述很多实际问题,因此得到了广泛的应用。最典型的应用领域有电路分析、寻找最短路径、项目规划、鉴别化合物、统计力学、遗传学、控制论等学科中。图的主要特点:它的每一个顶点可以与多个其他顶点相关联,各顶点之间的关系时任意的。1、图的一些基本概念路径:在图G=(V,E)中,若从顶点vi出发沿着一些边经过若干顶点vp1,vp2,vp3,vp4...vpm到达顶点vj则称顶点序列(vi,vp1,vp2,vp3,vp4...vpm,vj)为从顶点i到顶点j的一条路径。路径长度:不带权的图,路径长度是指此路径上边的条数。带权图,路径长度是指路径上各个边上的权值之和。简单路径:若 阅读全文
posted @ 2013-04-20 12:47 李VS超 阅读(192) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2013-04-18 19:12 李VS超 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 动态规划算法要求问题具有两个重要性质:最优子结构性质和子问题重叠性质。1、设计动态规划算法的第一步是刻画最优解的结构。当问题的最优解包含子问题的最优解时,称该问题具有最优子结构性质。利用问题的最优子结构性质,以自底向上的方式递归的从子问题的最优解逐步构造出整个问题的最优解。2、可用动态规划算法求解的问题的具备的另一个基本要素是子问题的重叠性质。用递归算法自顶向下解决问题时,每次产生的问题并不总是新问题,有些子问题被重复计算多次。动态规划算法利用了这种子问题的重叠性质,对每个子问题只解一次,而后将其解保存在一个数据结构中,当需要用到的时候,只用常熟时间查看以下。下面结合0-1背包问题理解动态规划 阅读全文
posted @ 2013-04-18 18:59 李VS超 阅读(906) 评论(0) 推荐(0) 编辑
摘要: 分治算法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归的解这些子问题,然后将各个子问题的解合并得到原来的问题的解。分治法的分割原则,应该把原问题分解成相同大小的问题是最有效的。而且根据实践经验得到,这些子问题大小相等的情况总比大小不等的情况要好。该算法主要用的思想便是递归,分治和递归是一对孪生兄弟。二分搜索算法是运用分治策略的典型例子:二分搜索的算法很容易理解,但是要写出一个正确的二分搜索算法也不是一件简单的事情.第一个二分搜索算法在1946年就出现了,但是第一个正确的二分搜索算法直到1962年才出现。下面是我写的算法代码:bool Half 阅读全文
posted @ 2013-04-16 10:44 李VS超 阅读(706) 评论(0) 推荐(0) 编辑
摘要: 第一步:分治法的简单思想在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)等等。任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时,不需任何计算。 n=2时,只要作一次比较即可排好序。n=3时只要作3次比较即可,…。 而当... 阅读全文
posted @ 2013-04-12 21:32 李VS超 阅读(3730) 评论(0) 推荐(0) 编辑
摘要: 思想:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。抽象工厂模式的类图:AbstractFactory-声明一个创建抽象产品对象的操作接口。ConcreteFactory-实现创建具体产品对象的操作。AbstractProduct-声明一类产品对象的接口。Product-实现AbstractProduct接口的,被相应具体工厂创建的产品对象。Client-仅使用AbstractFactory和AbstractProduct类声明的接口。代码实现:抽象和具体工厂的类放在一起,这样写的好处有很多,最后解释。/*学院的抽象工厂类*/ //相互依赖关系很强的类放在一起写的cla. 阅读全文
posted @ 2013-04-11 22:56 李VS超 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 陈老师领导的开源项目:http://code.google.com/p/cloudxy/linux、openstack开源项目:http://github.org/云计算开源项目:http://www.openstack.org/阿帕奇软件基金会:http://www.apache.org/开源人工大脑项目:http://www.oschina.net/p/nengoC++网络工具包:http://pocoproject.org/ 阅读全文
posted @ 2013-04-09 21:37 李VS超 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 对象池就是一定数量已经创建好的对象的集合。可以事先创建一批对象,放在一个链表中,以后每当程序要新的对象时,都从对象池中获取,每当程序用完该对象后,都把该对象归还给对象池。这样就少了很多的malloc/free操作,在一定程度上提高了系统的性能,尤其在动态内存分配比较频繁的程序中效果尤其明显。对象池的特征:1、对象池中有一定数量创建好的对象。2、对象池向用户提供获取对象的接口和归还对象的接口。下面是参考网上的资料写的实现代码:#include<list>#include<iostream>using namespace std;template<class T> 阅读全文
posted @ 2013-04-09 20:56 李VS超 阅读(1963) 评论(2) 推荐(0) 编辑
摘要: 本文将从C++的内存管理、内存泄漏、内存回收三个方面研究C++的内存管理问题。1、 内存管理C++中,内存分为5个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。函数内局部变量的存储单元在栈上创建,函数执行结束后这些存储单元被自动释放。栈内存分配运算内置于处理器的指令集中,效率很高。用new运算符分配的内存块在堆上创建,这些内存的释放由程序员控制。在一个new运算符后一般会跟着一个delete运算符。如果程序员没有手动释放,操作系统会自动回收。自由存储区是由malloc分配的内存块,相应的可以用free释放分配的内存块。全局/静态存储区用于存放全局变量和静态变量。常量存储区存储常量 阅读全文
posted @ 2013-04-09 19:47 李VS超 阅读(288) 评论(0) 推荐(0) 编辑
摘要: C++标准规定了每个算算术类型的最小存储空间,但是并不阻止编译器使用更大的存储空间。整形中的问题:C++标准并未规定signed类型如何用位来表示,而是由编译器自由决定如何表示signed类型。当我们把一个超出类型表示范围的值赋值给指定类型的对象时:最终的取值取决于这种类型是signed还是unsigned的。1、如果是unsigned类型,则对该值取该类型表示范围的模,将该值赋值给这个类型对象。负数总是超出其取值范围,所以unsigned类型是不可能保存负数的。C++中将负数赋值给unsigned是合法的,其结果是对该负数对该类型的取值个数取模后的值。-1赋值给unsigned char , 阅读全文
posted @ 2013-04-08 11:28 李VS超 阅读(197) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 下一页