![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
峰中劲草
这个作者很懒,什么都没留下…
展开
-
用优先队列式分支限界法解决0-1背包问题
用优先队列式分支限界法解决0-1背包问题的算法思想:1.分支限界法常以广度优先或最小耗费优先(最大效益优先)方式搜索问题的解空间树, 对于0-1背包问题的解空间树是一个颗子集树。2.在分支限界法中有一个活结点表,活结点表中的每个活结点只有一次机会成为扩展结点,一旦成为 扩展结点就一次性产生所有儿子结点,在这些儿子结点中,导致不可行解或导致非最优解的儿子 结点被舍弃,其余儿子结点被加入到活原创 2016-04-26 20:28:23 · 34447 阅读 · 3 评论 -
用回溯法解决0-1背包问题
用回溯法解决0-1背包问题需要解决一下问题:1.如何动态生成子集树2.如何设计子集树中的结点类型3.如何设计两个剪枝函数:约束函数和限界函数4.如何保存一个或多个最优解,同时保存最优值解决方法:1.子集树通过动态的方式生成,子集树中的结点类型共用物品类型,其中结点之间的父子关系通过递归调用的方式关联,这种关系并不在类中设置变量显示表示。2.为了方便限界函数的计算和程原创 2016-04-27 19:02:22 · 14342 阅读 · 2 评论 -
用动态规划算法解决0-1背包问题
用动态规划算法解决0-1背包问题需要了解以下基本概念和原理:1.使用动态规划算法必须具备两个基本要素:最优子结构性质和重叠子问题性质2.动态规划算法常以自底向上的方式计算最优值,也就是说,从最小的子问题开始向包含该子问题的大问题方向求解,把每一次求解出的子问题的解保存下来,以便提供给包含该小问题的大问题使用,因此使用循环迭代方式计算更为合理,但从动态规划算法的两个基本要素可以看出,直接以递原创 2016-04-30 21:44:25 · 20117 阅读 · 1 评论 -
用动态规划算法的变形方法——备忘录方法,解决0-1背包问题
使用备忘录方法解决0-1背包问题:1.跟直接递归很相似,该算法能将递归遇到的子问题的解保存在一个表中,以便下一个递归遇到同样的子问题时快速求解。2.为了区分一个子问题是否已经求解,可以通过查表的方式来判断,若子问题对应的表中元素的值为一个初始特殊值,说明该子问题还未求解;否则,表明该子问题曾经已求解过,直接获取子问题的解,不需要递归求解该值。3.备忘录算法与动态规划算法的区别有:(原创 2016-05-04 10:59:20 · 11722 阅读 · 2 评论 -
旅行售货员问题的回溯法求解
旅行售货员问题的解空间是一颗排序树,对于排序树的回溯法搜索与生成1,2,3,4,...,n的所有排列的递归算法Perm类似,开始时,x = [1,2,...,n],则相应的排序树由x[1:n]的所有排序构成。以下解释排序算法Perm:(1)假设Perm(1)的含义是对x = [1,2,...,n]进行排序,则Perm(i)的含义是对[i,i+1,i+2,...,n]进行排序。为了方便描述,规定原创 2016-05-04 21:22:37 · 19191 阅读 · 1 评论 -
C++中特别的函数和变量
内联函数(1) 内联函数是C++为提高程序运行速度所做的一项改进。(2) 内联函数的编译代码与其他程序代码“内联”起来了,也就是说,编译器将使用相应的函数代码替代函数调用。(3) 内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存。比如,如果程序在10个不同地方调用同一个内联函数,则该程序将包含该函数代码的10个副本。(4) 使用内联原创 2016-05-31 21:34:47 · 481 阅读 · 0 评论 -
《C++ Prime Plus》学习总结
1. 内联函数(1) 内联函数是C++为提高程序运行速度所做的一项改进。(2) 内联函数的编译代码与其他程序代码“内联”起来了,也就是说,编译器将使用相应的函数代码替代函数调用。(3) 内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存。比如,如果程序在10个不同地方调用同一个内联函数,则该程序将包含该函数代码的10个副本。(4)原创 2016-09-05 20:38:06 · 3801 阅读 · 0 评论 -
C++11并发相关知识点
并发的途径:1. 多进程并发将应用程序分为多个、独立的、单线程的进程。它的特点:(1)这种进程之间的通信通常设置复杂,或是速度较慢,或两者兼备,因为操作系统通常在进程间提供了大量的保护。(2)运行多个进程所需的开销较大,比如,启动进程需要的时间、操作系统必须投入内部资源来管理进程。(3)使用独立的进程实现并发还有一个额外的优势,它可以实现通过网络连接的不同机器上运行独原创 2016-09-05 20:34:16 · 401 阅读 · 0 评论 -
《Effective C++》学习总结
1. 一个base class的设计通常有两个用途,一个是用于多态用途,另一个是用于非多态用途。多态用途:base class 必须带有virtual函数,同时含有virtual析构函数。非多态用途:base class没有virtual函数,也没有virtual析构函数。例如,Uncopyable和标准程序库的input_iterator_tag。2. 任何class只要原创 2016-09-05 20:22:32 · 434 阅读 · 0 评论