- 博客(34)
- 资源 (16)
- 收藏
- 关注
转载 新特性——auto的使用
C++11中引入的auto主要有两种用途:自动类型推断和返回值占位。auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全是两个概念。1. 自动类型推断 auto自动类型推断,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推断,可以大大简化我们的编程工作。下面是一些使用auto的例子。
2017-11-30 18:42:06 461
原创 算法导论-证明强连通分量算法
概念 强连通分量:有向图G=(V,E)G=(V,E)的强连通分量是一个最大结点集合C⊆VC\subseteq V,∀u,v∈C\forall u,v\in C,u和v是可以相互到达的。算法伪代码 STRONGLY-CONNECTED-COMPONENTS(G)call DFS(G) to compute finishing times u.f for each vertex ucomput
2017-11-28 11:21:10 1656
原创 算法导论22.4-2
问题描述 请给出一个线性时间的算法,算法的输入为一个有向无环图G=(V,E)G=(V,E)以及两个结点s和t,算法的输出是从结点s到结点t之前的简单路径的数量。问题解答 由于除了s与t相等的情况外,每一条从u到v的路径必定经过u的邻接结点,所以∑Pu−>v\sum P_{u->v}就是u的每个邻接结点到v的路径数的和。可以用如下伪代码表示: int SIMPLE-PATH-NUM(u,v)
2017-11-27 20:15:04 1959 2
原创 算法导论22.3-1
问题描述 画出一个3*3的网格,行列的抬头分别标记为白色、灰色和黑色。对于每个表格单元(i,j),请指出在对有向图进行深度优先搜索的过程中,是否可能存在一条边,连接一个颜色为i的结点和一个颜色为j的结点。对于每种可能的边,指明该种边的类型。另外,请针对无向图的深度优先搜索在制作一张这样的网格。问题求解 深度优先搜索可以对输入图的边进行分类: 树边:在深度优先森林GπG_\pi中的边。 后向
2017-11-25 16:51:03 880
原创 VS编译的控制台程序发布问题
所谓程序的发布,指的是把运行无误的程序公布出来或者提交给用户。那么用VS编译的控制台程序发布时需要注意哪些事项呢?①如果直接把Debug版本的程序发布,生成的.exe文件将会很大,因为里面包含了很多的调试信息。所以应该改为Release版本。以vs2013为例,把工具栏的相关部分改为如下所示。②程序运行的过程中或多或少都会包含一些动态链接库,如果采用动态编译,那么运行在不具备所需动态链
2017-11-24 10:14:42 2846
原创 算法导论22.1-7
假设A=BBTA=BB^T,对于AA中的元素aija_{ij}分两类讨论。 ①当i=ji=j时,用BB的第ii行乘以BTB^T的第jj列(也就是BB的第jj行) aij=∑k=1|E|b2ika_{ij}=\sum_{k=1}^{|E|}b_{ik}^2 也就是说对BB的第ii行元素求平方和。b2ik∈{0,1}b_{ik}^2\in\{0,1\}且只有结点ii与第kk条边相连时才取1,因此a
2017-11-22 15:35:17 583
原创 算法导论21.1-1,21.1-2,21.1-3
21.1-1问题描述 假设CNNECTED-COMPONENTS作用于一个无向图G=(V,E),这里V={a,b,c,d,e,f,g,h,i,j,k}V=\{a,b,c,d,e,f,g,h,i,j,k\},且E中的边以如下的顺序处理:(d,i),(f,k),(g,i),(b,g),(a,h),(i,j),(d,k),(b,j),(d,f),(g,j),(a,e)(d,i),(f,k),(g,i)
2017-11-21 15:25:29 1244
转载 我的算法学习之路
转自:https://www.cnblogs.com/figure9/archive/2014/05/05/3708351.html关于严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的。原文链接:http://zh.lucida.me/
2017-11-21 10:29:19 338
原创 算法导论20.2-6
问题描述 写出一个创建proto-vEB(u)结构的伪代码问题求解 proto-vEB(u)结构分为两种情况讨论: ①如果u=2,那么该结构只包含一个u和一个两位的位向量A; ②如果u>2,那么该结构的除了底层结点外都包含一个u、一个proto-vEB(u√\sqrt u)结构和一个位向量cluster(其每个元素指向一个proto-vEB(u√\sqrt u))。 因此,可以得到pro
2017-11-20 17:03:10 305
原创 算法导论20.2-2
问题描述 写出PROTO-vEB-DELETE的伪代码。通过扫描簇内的相关位,来更新相应的summary位。并且你实现的伪代码的最坏情况运行时间是多少?问题求解PROTO-vEB-DELETE(V,x) 注:删除V中的xif V.u == 2 V.A[x]=0else PROTO-vEB-DELETE(V.cluster[high(x)],low(x)) isEmpty =
2017-11-20 16:06:21 548
原创 算法导论20.2-1
问题描述 写出PROTO-vEB-MAXIMUM和PROTO-vEB-PREDECESSOR过程的伪代码问题求解PROTO-vEB-MAXIMUM(V) 注:返回V中的最大元素,或NILif V.u == 2 if V.A[1] == 1 return 1 elseif V.A[0] == 1 return 0 else return
2017-11-20 14:28:50 682
原创 算法导论18.2-4
问题描述 假设关键字{1,2,…,n}被插入一棵最小度数为2的空B树中,那么最终的B树有多少个结点?问题求解 把关键字{1,2,…,11}一次插入B树中的变化如下所示: 可以发现,由于每次插入的树都比前面的大,因此新关键字永远是放到了最右边的结点中。除了最右边一直往下的路径上的结点(记为R)中的关键字数有可能大于1外,其他所有结点的关键字数量都是1.当所有
2017-11-16 11:55:55 738 1
原创 算法导论18.1-4
问题描述 一棵高度为h的B树中,可以存储最多多少个关键字?用最小度数t的函数表示。问题求解 当所有节点的度都是2t2t时,此时有最多的结点。结点数为: 1+2t+(2t)2+...+(2t)h=1−(2t)h+11−2t1+2t+(2t)^2+...+(2t)^h=\frac{1-(2t)^{h+1}}{1-2t} 此时,每个结点包含2t−12t-1个关键字,所以所有的关键字数为: (
2017-11-15 14:55:35 441
转载 LaTex各种命令、符号
函数、符号及特殊字符声调语法效果语法效果语法效果\bar{x}latex数学符号表(2)" style="border:none; vertical-align:middle; outline:none; max-width:100%">\acute{\eta}latex数学符号表(2)" style="border:none;
2017-11-14 09:47:57 27151 2
原创 算法导论17.1-3
问题描述 假定我们对一个数据结构执行一个由nn个操作组合成的操作序列,当ii严格为2的幂时,第ii个操作的代价为ii,否则代价为1。使用聚合分析确定每个操作的摊还代价。问题求解 假设cic_i是第ii个操作的代价,则 ci={ii是2的幂1其他\begin{equation}c_i=\left\{\begin{aligned}i \quad\quad i是2的幂 \\1\quad\q
2017-11-14 09:43:31 2439
原创 算法导论16.3-5
问题描述 证明:如果我们将字母表中字符按频率单调递减排序,那么存在一个最优编码,其码字长度是单调递增的。问题分析 任务是证明存在一个码字长度单调递增的最优编码,那么如果可以从它的反例推出码字长度单调递增的编码是最优编码,则问题可以求证。问题求解 ①假设字母表为:{c1,c2,...cn}\{c_1,c_2,...c_n\},字母出现的频率用ff表示,字母对应的码字长度用dd表示。则用数学的
2017-11-13 10:42:41 1757 1
原创 算法导论16.3-3
问题描述 如下所示,8个字符对应的出现频率是斐波那契数的前8个数,次频率集合的赫夫曼编码是怎么样的? a:1b:1c:2d:3e:5f:8g:13h:21a:1\quad b:1\quad c:2\quad d:3\quad e:5\quad f:8\quad g:13\quad h:21 你能否推广你的结论,求频率为前n个斐波那契数的最优前缀码?问题求解 ① h:0g:10f:110e
2017-11-13 09:31:55 5581
原创 算法导论16.2-5
问题描述 设计一个高效算法,对实数线上给定的一个点集{x1,x2,...,xn}\{x_1,x_2,...,x_n\},求一个单位长度闭区间的集合,包含所有给定的点,并要求次集合最小。证明你的算法是正确的。问题分析 ①求解单位长度闭区间集合问题的最优子结构 首先对点集{x1,x2,...,xn}\{x_1,x_2,...,x_n\}按递增顺序排列,得到点集{y1,y2,...,yn}\{y_
2017-11-12 16:42:03 4364
原创 算法导论16.2-2
问题描述 设计动态规划算法求解0-1背包问题,要求运行时间为O(nW)O(nW),nn为商品数,WW是小偷能放进背包的最大商品总重量。0-1背包问题用公式表示为: maximize∑i=1nvixisubjectto∑i=1nwixi≤Wxi∈{0,1}maximize \sum_{i=1}^nv_ix_i\quad subject\quad to \sum_{i=1}^nw_ix_i\leq
2017-11-11 16:11:42 1820
翻译 算法导论16.2-1
问题描述 证明:分数背包问题具有贪心选择性质。问题求解 (本求解过程来源于对英文答案的翻译) ①贪心选择性质: 全局最优解可由局部最优(贪心)选择实现。换句话说,当我们考虑如何做出当前问题看起来最好的选择,而不考虑子问题的结果。 ②证明: 假设II为分数背包问题的一个实例,nn是商品的数量,viv_i是ithi^{th}商品的价值,wiw_i是ithi^{th}商品的重量,WW是背包的
2017-11-11 11:33:38 1262
原创 算法导论16.1-2
16.1-2问题描述 不再一直选择最早结束的活动,而是选择最晚开始的活动,前提仍然是与之前选出的所有活动均兼容。描述利用该方法设计的贪心算法,并证明算法会产生最优解。贪心选择 令Sk={ai∈S:fi≤sk}S_k=\{a_i\in S:f_i \leq s_k\}即aka_k开始前结束的任务集合。当我们做出贪心选择ala_l,那么剩下的SlS_l是唯一需要求解的子问题。我们先证明“如果am
2017-11-10 15:46:34 5057
原创 算法导论16.1-1
算法导论16.1-1题目要求为活动选择设计一个动态规划算法。1. 问题描述 假定有一个n个活动的集合S={a1,a2,...,an}S=\{a_1,a_2,...,a_n\},这些活动使用同一个资源,而这个资源在某个时刻只能供一个活动使用。如果任务aia_i 被选中,那么发生在[si,fi)[s_i,f_i)期间。如果两个活动aia_i和aja_j不重叠,即si≥fjs_i\geq f_j或sj
2017-11-10 10:11:23 1683 1
转载 CSDN-markdown语法之怎样使用LaTeX语法编写数学公式
文件夹文件夹正文标记公式行内公式块级公式上标和下标分数表示各种括号根号表示省略号矢量表示间隔空间希腊字母特殊字符关系运算符集合运算符对数运算符三角运算符微积分运算符逻辑运算符戴帽符号连线符号箭头符号几个样例其他特殊字符字体种类參考文献正文CSDN-markdown编辑器支持基于MathJax编写LaTeX数学公式。
2017-11-10 09:22:40 575 1
原创 算法导论思考题15.2(最长回文子序列)
最长回文子序列的求解可以转化为LCS的求解。如:对于输入的串X,对其反转后得到串Y,则X与Y的LCS即为X的最长回文子序列。因此只需要对LCS的程序稍作修改便可以得到求解最长回文子序列的程序:#include#include#include#define NUM 50using namespace std;int c[NUM][NUM];char b[NUM][NUM];void
2017-11-08 17:14:37 779
原创 算法导论中LCS的C++实现程序
LCS即最长公共子序列,输入为两个串X、Y,输出为X与Y的最长公共子序列。其求解方法是动态规划,即原序列的最长公共子序列依赖于前缀的最长公共子序列。具体的实现原理参考算法导论(第三版)222页-226页,本文给出它的C++实现程序:#include#include#define NUM 20using namespace std;int c[NUM][NUM];char b[NUM]
2017-11-08 16:54:15 1839
原创 关于算法导论15.4的步骤2中为什么可以通过求两者的最大值来合并定理15.1
在算法导论(第三版)15.4的步骤2中的第一段有语句“如果xm != yn,我们必须求解两个子问题:求Xm-1和Y的一个LCS与X和Yn-1的一个LCS。两个LCS较长者即为X与Y的一个LCS。” 读到这里,不知读者是否也存在疑惑:为什么两个的较大值可以代替对定理15.1中的2、3点呢?就是说如何由定理15.1中的2、3点推出两个LCS较长者即为X与Y的一个LCS呢?
2017-11-08 15:51:11 326
原创 算法导论15.5-1的答案及C++实现
①设计的伪代码CONSTRUCT-OPTIMAL-BST(root)如下CONSTRUCT-OPTIMAL-BST(root,i,j,flag) if i<=j if flag == 1 print k root[i,j]为根 elseif flag == 0 print k root[i,j]为k j+
2017-11-08 13:33:59 1790
转载 C++二维数组
我们知道,一维空间是一条线,数学中用一条数轴来表达;二维空间是一个平面,数学中用平面坐标系来表达。那么二维数组又是什么样的呢?线与面我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线上的点。而所有的数据都是存储在一条线上。如果我们采用两个下标,就能形成一个平面,犹如一张表格,有行有列,所有的数据就能够存放到表格里。我们把二维数组的两个下标分别称为行下标和列
2017-11-08 11:42:40 1226
原创 Source Insight的代码显示信息
1.窗口布局2.窗口间的关联①代码窗口显示Project Window中打开的文件。②Symbol Window显示当前打开的文件中包含的元素,其中: #符号是Directive即指示器,黄色代表预编译指令,红色的代表常量的宏定义。 绿色的M符号是Macro即宏,代表函数的宏定义。 椭圆代表Global Variable即全局变量,浅蓝色的
2017-11-06 17:29:21 4130
原创 Source Insight源代码的导入
1.打开Source Insight。2.Project->New Project->输入工程名,OK,输入源码所在的目录(也就是能包含完所有源码文件的最底层的一个文件夹)。OK,点击Add All,勾上图中所圈的地方,OK,”确定“,然后可以关闭上上图的窗口,就完成了代码的导入。
2017-11-06 17:09:02 36046
原创 Source Insight基本教程
假设读者已经安装好了Source Insight......Source Insight用于查看某个项目源代码,其排版整洁,语法关键词高亮,还能代码关联,可用于c/c++,java等语言的代码查看。其作用决定了本教程的编排:①工程导入。
2017-11-06 16:49:41 4827
原创 C++中拷贝构造函数的参数为何一定要用引用类型
我们知道,C++有一种特殊的带参数的构造函数,即拷贝构造函数。为什么特殊呢?因为该函数的形参类型便是拷贝构造函数所在的类的类型。废话少说,直接看程序:地方#includeusing namespace std;class A{public: A(){ cout << "default" << endl; } A(A& a){ cout << "copy" << endl
2017-11-03 14:56:23 954
转载 拷贝构造函数什么时候调用?
1当用类的一个对象初始化该类的另一个对象时.例如:C/C++ codeint main(){ point A(1,2); point B(A);//用对象A初始化对象B,拷贝构造函数被调用.}2 如果函数的形参是类的对象,调用函数时,进行形参和实参结合时. C/C++ codevoid f(point p){}main(){ poi
2017-11-03 13:34:13 2253
Approximation Algorithms.rar
2020-04-26
牛津字典(欧路词典).txt
2020-03-29
STL_帮助文档
2016-11-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人