随笔分类 -  AlgorithmAndDS

摘要:在如下8*6的矩阵中,请计算从A移动到B一共有____种走法。要求每次只能向上或向右移动一格,并且不能经过P。 8*6的矩阵,从左下角A到右上角B,一共需要走12步,其中5步向上,7步向右,因此总的走法一共有C(12,5)=792种,但题目规定不能经过P,因此需要减去经过P点的走法。 经过P的路径分 阅读全文
posted @ 2016-03-03 15:23 加拿大小哥哥 编辑
摘要:研发时候,不要受原来的术语的影响,其实就是想着原来学过的或者看过的可以解决新遇到的问题,这其实是侥幸心理,忘记原来的术语吧,那只是你创新的源泉。 遍历就是把节点按一定规则构成一个线性序列,不同的规则得到不同顺序的线性序列,仅此而已 。 算法是实际问题工作步骤的抽象,不要一味想算法,想想实际... 阅读全文
posted @ 2015-08-26 09:16 加拿大小哥哥 编辑
摘要:一.问题来源 昨晚看微博,发现于梁斌penny,他在说现在的面试制度考不出来真功夫,也就是基本功,面试题千篇一律的算法,看过会,不看就不会。期间提到了快慢指针求中位数。 查资料时我发现,这其实是计算机系统原理里的知识点。二.快慢指针概念 快慢指针中的快慢指的是移动的步长,即每次向前移动速度的快... 阅读全文
posted @ 2015-04-06 14:00 加拿大小哥哥 编辑
摘要:先说点题外话,早上同学给我了一套卷子,让我做,他对象的机试题,第一题是求点队中的最小距离点对,没说数据量,那肯定直接暴力就行了(有给分点,正确输入给5分,什么什么给五分),或者分治算法(编程之美里的);第二题是替换字符串;第三题是求给出的四边形的面积,逼着认为这个不能用海伦公式,因为可能是凹四边形, 阅读全文
posted @ 2015-03-15 11:16 加拿大小哥哥 编辑
摘要:最近大三学生让我去讲课,我就恶补了最大流算法,笔者认为最重要的是让学弟学妹们入门,知道算法怎么来的?为什么是这样?理解的话提出自己的改进,然后再看看Dinic、SAP和ISAP算法…..一、概念引入 首先要先清楚最大流的含义,就是说从源点到经过的所有路径的最终到达汇点的所有流量和。 流网络G=(V... 阅读全文
posted @ 2014-12-25 20:37 加拿大小哥哥 编辑
摘要:刚看到一新闻说很多互联网公司尤其是草根北京的都缺少有针对性的CTO,看完我感觉我要努力学好算法,争取自己创业。 一、PearsonCorrelation 两个变量之间的相关系数越高,从一个变量去预测另一个变量的精确度就越高,这是因为相关系数越高,就意味着这两个变量的共变部分越多,所以从其中一个变量的变化就可越多地获知另一个变量的变化。如果两个变量之间的相关系数为1或-1... 阅读全文
posted @ 2014-09-29 17:58 加拿大小哥哥 编辑
摘要:英文题目,汉语内容,有点挂羊头卖狗肉的嫌疑,不过请不要打击我这颗想学好英语的心。当了班主任我才发现大一18本书,11本是英语的,能多用两句英语就多用,个人认为这样也是积累的一种方法。 Thanks open source pioneers dedicated to computer science... 阅读全文
posted @ 2014-09-26 13:48 加拿大小哥哥 编辑
摘要:一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。 TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。 ... 阅读全文
posted @ 2013-09-21 11:03 加拿大小哥哥 编辑
摘要:想吃项记的烩面了……这小地方的可难吃。 看完了《裸婚时代》,我觉得冬瓜说得对,刘易阳不敢面对自己的真实感受。 女生都是感性的,工作永远不如生活重要。 不是坐在一起就叫团队,不是不吵架就叫态度。 昨晚一哥们说求k小直接可以进行k次冒泡,我都想不起来,我想到的是区间快拍,说明基础很重要。 对... 阅读全文
posted @ 2013-09-14 00:28 加拿大小哥哥 编辑
摘要:华杰让我看了一道面试题:现有一段程序S,可以对任意n个数进行排序。如果现在需要对n^2个数进行排序,最少需要调用S多少次?(只允许调用S,不可以做别的操作)。 看到了这个,我想试试希尔排序,就学学。 一.理论准备 希尔排序是基于直接插入排序的,不懂得请看这一篇http://www.cnblogs.com/hxsyl/archive/2013/0... 阅读全文
posted @ 2013-09-09 12:05 加拿大小哥哥 编辑
摘要:数据结构上老师也没讲这个,平常ACM比赛时我也没怎么理解,只是背会了代码……前天在博客园上看见了一篇介绍KMP的,不经意间就勾起了我的回忆,写下来吧,记得更牢。 一.理论准备 KMP算法为什么比传统的字符串匹配算法快?KMP算法是通过分析模式串,预先计算每个位置发生不匹配的时候,可以省去重新匹配的的字符个数。整理出来发到一个next数组, 然后进行比较,这样可以... 阅读全文
posted @ 2013-09-04 09:33 加拿大小哥哥 编辑
摘要:为什么写这个呢?因为那天听到了这个词,属于MST的扩展……最小K度树有空研究。 一.理论准备 需要读者事先懂得prime算法,不太了解的请看博主这一篇http://www.cnblogs.com/hxsyl/p/3286956.html,也需要读者对DP了解一些。 先看一个结论:次小生成树可由最小生成树换一条边得到,笔者认为很... 阅读全文
posted @ 2013-08-30 10:02 加拿大小哥哥 编辑
摘要:拨开云雾见天日…… 一.问题引入 昨晚和老婆深入交流了下,得出了重大结论:必须要创业。 最后一次给孩子们讲课讲的这个,不过效果不怎么理想,一问才知道大一的说只要一涉及到树就不懂了,我就怀疑讲树哥们怎么讲的(呵呵,纯属调侃,勿怪),竟然让孩子们连入门都没有,不过在这么久我也见怪勿怪了,很多老师都只是空 阅读全文
posted @ 2013-08-28 12:57 加拿大小哥哥 编辑
摘要:只想说:温故而知新,可以为师矣。我大二的《数据结构》是由申老师讲的,那时候不怎么明白,估计太理论化了(ps:或许是因为我睡觉了);今天把老王的2011年课件又看了一遍,给大二的孩子们又讲了一遍,随手谷歌了N多资料,算是彻底搞懂了最短路径问题。请读者尽情享用…… 我坚信:没有不好的学生,只有垃圾的教育 阅读全文
posted @ 2013-08-20 16:12 加拿大小哥哥 编辑
摘要:一.理论准备 从图上看出:C[1] = A[1],C[2] = A[1] + A[2],C[3] = A[3],C[4] = A[1] + A[2] + A[3] + A[4],C[5] = A[5],C[6] = A[5] + A[6],C[7] = A[7],C[8] = A[1] + A[2] + A[3] + A[4] + A[5] +... 阅读全文
posted @ 2013-08-17 15:58 加拿大小哥哥 编辑
摘要:一.理论准备 这两天看到了图论的二部图,闲着没事就水了一道。 先看增广路的定义:增广路,也称增广轨或交错轨: 若P是图G中一条连通两个未匹配顶点的路径,并且属于M的边和不属于M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径。 由增广路的定义可以推出下述三个结论:P的路径长... 阅读全文
posted @ 2013-08-15 14:13 加拿大小哥哥 编辑
摘要:这是今天做了一道字符串的问题,一直MLE,所以想到了减少Map里对应关系数量来降低内存开销。随手谷歌,整理出了如下资料。 如果效率优先的话还是写俩Map吧。 import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.Ma... 阅读全文
posted @ 2013-08-13 22:22 加拿大小哥哥 编辑
摘要:一.概念引入 AC过后,突然想起费马点和最小覆盖圆的圆心有关系吗?答案是没关系,如下图:费马点肯定在等腰梯形内,不是在圆心。 模拟退火算法与初始值无关,算法求得的解与初始解状态S(是算法迭代的起点)无关;模拟退火算法具有渐近收敛性,已在理论上被证明是一种以概率收敛于全局最优解的全局优化算法;模拟退火算法具有并行性。 三... 阅读全文
posted @ 2013-08-12 13:42 加拿大小哥哥 编辑
摘要:以HDU2108为例,去AC吧。//点逆序输入import java.util.Scanner;//1spublic class HDU2108 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true) { int x,y; int n = sc.nextInt(); if(0==n) { break; } Point[] p = new Point[n]; for(... 阅读全文
posted @ 2013-08-10 15:37 加拿大小哥哥 编辑
摘要:一.点到直线距离 已知一个点P(X0, Y0), 求点到直线Ax + By + C = 0的距离公式为:d = [AX0 + BY0 + C的绝对值]/[(A^2 + B^2)的算术平方根],如求点P(-1, 2)到直线2X + Y - 10 = 0的距离:X0 = -1, Y0 = 2, A = 2, B = 1, C = -10 代入公式 d =[2 ... 阅读全文
posted @ 2013-08-10 10:48 加拿大小哥哥 编辑