02 2015 档案
摘要:二分查找的两种写法,递归和普通循环~ 大部分情况下都用普通的循环,因为递归法费空间。/* 时间复杂度: 1.最坏情况 查找最后一个元素(或者第一个元素) Master定理 T(n)=T(n/2)+O(1) 这个O(1)是判断 所以 T(n)=O(logn) ...
阅读全文
摘要:第一种方法, 主要是分组每组五个排序,取中位数,再取中位数的中位数然后进行分割,根据MoM和k的比较进行递归查找。但是貌似当数量一大的时候,容易出现问题。暂时留有一定的疑问。这个的复杂度也是O(n)。//选择排序void SelectSort(long* A,int len=5){ for (...
阅读全文
摘要:先放上老版代码,这个并不好,由于用到了各种指针和动态数组申请和释放,容易出现问题,不如第二种方法直接用临时数组来解决这个问题老版://归并 left是左边数组 left_len长度int* Merge(int* left,int left_len, int* right,int right_len)...
阅读全文
摘要:第一种就是纯粹的暴力枚举起始、终点。 O(n^3) 第二种在第一种的基础上先进行初始化,将以第一个元素为起点,所有元素为终点的所有子列和存储在S数组中,所以在第三层循环中计算子列和是直接用S[j]-S[i-1]即可,这是利用了空间去换时间。O(n^2) 第三种也是O(n^2),但是在第二种的基础上,
阅读全文
摘要:/*因为注释很详细,就直接上代码了,需要注意的是,用了白书的三种方法来进行判重,其中最快捷的方法还是stl的set,还有哈希技术涉及到了多个链表的处理,还有一种就是编码解码技术,这个需要找到一个非常好的函数才能达到一一对应。而哈希表不需要一一对应(因为有链表)。*///// main.cpp// ...
阅读全文
摘要:题目http://codevs.cn/problem/1288/卧槽。整了一天还是没全 AC 后面多层的时候不知道问题出在哪里了,跑不出来。这个题的难点在于解答树的每一层都是无穷多,这导致我们必须要强烈的剪枝!否则绝对没有办法跑完。由于题目的特殊性(拆分),所以我们要尽量剪枝,估计是因为我这个剪的还...
阅读全文
摘要:在之前的 N 皇后和困难的串问题中,回溯法都是在解决可行性约束。换一句话说,对于回溯点的判断是用来验证此点是否合法。但是在一些优化问题的求解过程中,每一个点都是合法的,所以我们要进行剪枝。1.先得到一个解。(一般情况下不是最优解,实现细节:用一个极大的数先作为结果。)2.在回溯的过程中,判断继续进行...
阅读全文

浙公网安备 33010602011771号