摘要: 使用vim的各位肯定尝试过各种各样的自动补全插件,比如说大名鼎鼎的 OmniCppComplete 。这一类的插件都是对 Ctags 生成的符号表进行字符串匹配来获得可能的补全项。他们在编写 C 代码的时候还是很好用的,但是到了 C++ 的环境情况就不同了,各种作用域的存在使得仅仅依靠符号表匹配的方式完全无法发挥作用。比如我输入一个 SomeType 的对象 bar,然后我想得到成员变量 a 的提示,但是却没有任何事情发生:struct SomeType { int a; };void foo(){ SomeType bar; bar. // 咦。。。}有人会问:那像 Visual... 阅读全文
posted @ 2013-09-08 00:05 有来 有去 阅读(10216) 评论(3) 推荐(2) 编辑
摘要: 7.1-1 蓝色部分代表不大于pivot,红色部分表示大于pivot 13 19 9 5 12 8 7 4 21 2 6 11 13 19 9 5 12 8 7 4 21 2 6 11 13 19 9 5 12 8 7 4 21 2 6 11 9 13 19 5 12 8 7 4 21 2 6 11 9 5 13 19 12 8 7 4 21 2 6 11 9 5 13 19 12 ... 阅读全文
posted @ 2013-06-26 23:28 有来 有去 阅读(2902) 评论(4) 推荐(1) 编辑
摘要: 6.1-1元素最少的情况是最底层只有一个叶子,即$2^h$;元素最多的情况是整棵树是满的,即$2^{h+1}-1$。(这里按照叶子到根的最大边数来定义高度)6.1-2设高度为h,那么可知$$2^h \le n \le 2^{h+1}-1$$$$\Rightarrow h \le \lg n \lt ... 阅读全文
posted @ 2013-05-31 13:47 有来 有去 阅读(5301) 评论(3) 推荐(1) 编辑
摘要: 5.1-1如果我们能够比较任意两个应聘者的优劣,那么我们就能够对所有的应聘者按照优劣进行排序,之后按顺序对每个人赋予rank值,这样我们就知道了原来应聘者rank值的序列。5.1-2要利用Random(0, 1)实现Random(a, b),我们可以把问题转化为实现a+Random(0, b-a)。之后可以利用Random(0, 1)来生成二进制下随机数的每一位。由于数的范围是$[0, b-a]$,所以位数的范围是$[1, 1 + \lfloor \lg {(b-a)} \rfloor]$。如果生成的数大于b-a,就将其舍去重新生成,直到产生符合要求的数为止。Random(a, b) n = 阅读全文
posted @ 2013-05-15 16:44 有来 有去 阅读(4474) 评论(4) 推荐(3) 编辑
摘要: 4.5-1 a) $$a=2,b=4,f(n)=\Theta(1),\log_b a = \frac 12 \gt 0 $$ 符合情况1,$ T(n) = \Theta (n^{1/2})$ b) $$a=2,b=4,f(n)=\Theta(n^{1/2}),\log_b a = \frac 12 $$ 符合情况2,$ T(n) = \Theta (n^{1/2}\lg n)$... 阅读全文
posted @ 2013-05-10 15:48 有来 有去 阅读(4290) 评论(3) 推荐(0) 编辑
摘要: 4.1-1返回只包含绝对值最小的元素的子数组。4.1-2Maximun-Subarray(A) max = -infinity for i = 1 to A.length sum = 0 for j = i to A.length sum = sum + A[i] if sum > max max = sum low = i high = j return (low, high, max)每次内循环都利用上次累加的结果,避免重复运算。外层循环执行n次,第i次外循环内层循环执行n-i+1次,所以总的时间复杂度为$\Theta (n^2)$。4.1-3这道题$n_0$... 阅读全文
posted @ 2013-05-08 15:54 有来 有去 阅读(9122) 评论(5) 推荐(0) 编辑
摘要: 3.1-1 分情况讨论 当$f(n) \ge g(n)$时,$max(f(n), g(n))=f(n)$,存在$c_1=\frac 12,c_2=1,n_0>0$使得 $$0 < c_1(f(n)+g(n)) \le f(n) \le c_2(f(n)+g(n)) 对于所有n \ge n_0$$ 同理可证当$g(n) > f(n)$的情况 3.1-2 $(n+a)^b = n^b + ... 阅读全文
posted @ 2013-05-06 20:23 有来 有去 阅读(4359) 评论(0) 推荐(0) 编辑
摘要: 2.1-1 初始 31 41 59 26 41 58 第一遍 31 41 59 26 41 58 第二遍 31 41 59 26 41 58 第三遍 26 31 41 59 41 58 第四遍 26 31 41 41 59 58 第五遍 26 31 41 41 58 59 2.1-2 把顺序改成非递增只要把判断大小时的条件改成小于即可 Insertion-Sort(A) for ... 阅读全文
posted @ 2013-05-02 21:13 有来 有去 阅读(1285) 评论(0) 推荐(0) 编辑
摘要: 最近开始看算法导论了,但是发现官方给的参考答案只涵盖了一部分的习题,所以把自己做的答案分享一下,如有错误之处尽管指出,希望通过这个过程能与大家共同进步 我看的版本是英文第三版 (Introduction to Algorithms, Third Edition),所有的题目分为每一节后的练习(Exercises)和每一章后的问题(Problems),所有的题目编号都按照书上的编号来。比如1... 阅读全文
posted @ 2013-05-02 16:50 有来 有去 阅读(1892) 评论(0) 推荐(0) 编辑
摘要: C++11 标准推出了一个新的关键词auto,这个关键词可以通过表达式自动推断返回值的类型,这也是新标准中被各编译器厂商支持最为广泛的特性之一。利用这个关键词可以有效减少代码的长度,特别是在使用模板元编程的时候。举个简单的例子:vector<map<int, string>> stringMapArray; // 不使用auto版本vector<map<int, string>>::iterator iter1 = stringMapArray.begin(); // 使用auto版本auto iter2 = stringMapArray.beg 阅读全文
posted @ 2013-01-13 16:59 有来 有去 阅读(2746) 评论(9) 推荐(5) 编辑
Copyright ©2013 Jiajun. All Rights Reserved.