- 博客(5)
- 收藏
- 关注
原创 卡特兰数(Catalan)
问题《编程之美》中提到了“买票找零”问题,查阅了下资料,此问题和卡特兰数Cn有关,其定义如下:卡特兰数真是一个神奇的数字,很多组合问题的数量都和它有关系,例如:1. Cn = 长度为2n的Dyck words的数量。Dyckwords是由n个X和n个Y组成的字符串,并且从左往右数,Y的数量不超过X,例如长度为6的Dyck words为:XXXYYY XY
2013-07-01 19:51:05 550
原创 数组分割
问题一个2n的整数数组,分成n元素两组,保证两组和之差的绝对值最小,设计算法,保证两组和之差的绝对值最小。分析在2n个整数,计算1~n级情况,规则为“求和”。解法一使用n个哈希表来保存每一级所有的和情况,以排除重复:for (int k = 1; k <= 2 * n; k++)//计算依次拿出1、2、3...个元素的情况{ var m = Math.Min(
2013-06-29 23:28:49 435
原创 C++ or C#?
面对诸如:“C++效率更高,越底层越厉害,C#是微软想把大家变笨的诡计(只会搭积木)”的争议,我有一些想法,在发表之前,首先提及想到几句话:1. 当年C++出现的时候,存在“汇编效率更高,越底层越厉害,应该用汇编”的争议…2. 如果说伟大的科学是“站在巨人肩膀上的巨人“,那么软件行业有点像是“站在侏儒脚上的侏儒…”3. 一部伟大的文学著作,是以复杂的语法炫耀
2013-06-29 12:01:36 663
原创 一种简单而神奇的算法思路:分级组合(排列)法
在琢磨一些算法题的过程中,发现很多题目其实可以用同一种思路去解决:假设有n个元素数组,挨个取出所有元素,计算当取出0个,1个,2个…n个元素的情况下,数组中任意0个,1个,2个…n个元素所能组合(或排列)出的情况(或个数)。例如:求1,2,3这几个数求和能得到的数字:0级: 01级: 1,2,32级: 3,4,53级: 6取出元素
2013-06-29 11:47:27 1044
原创 快速排序的两重递归实现
发现快排的内部还可以多抽象一重递归:找到一个需要交换的位置来和哨兵交换(正向找和反向找不停切换)。 static void Sort(IList v, int l, int r) where T : IComparable { int i = l, j = r; Swap(v, ref i, ref j, v[l
2013-06-27 18:38:14 430
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人