2010年6月22日

《编程之美》:求二叉树中节点的最大距离

摘要: 看到这题,第一时间就联想到了求二叉树深度(通过分别求左右子树的深度,然后合并(取最大值加1)从而得到了根节点的深度(其实就是分治思想))代码如下:[代码]而现在我们要求节点的最大距离,我们可以用同样的方法去思考:对一个节点A,其子树中节点的最大距离一定是A左子树的深度 + A右子树的深度,所以我们只要用“分治”的思想递归求解即可,并且用一个MaxLen来维护最大值:[代码]... 阅读全文

posted @ 2010-06-22 13:11 DiaoCow 阅读(363) 评论(0) 推荐(0) 编辑

2010年6月1日

《编程之美》:分层遍历二叉树

摘要: 1.输出二叉树某一层结点(从左到右)把输出二叉树第K层结点转换成:分别输出"以该二叉树根结点的左右子树为根的两棵子树"中第K-1层结点。[代码]个人觉得,原书中:return a() + b()似乎不能保证从左往右输出,因为a() + b()的调用顺序是由编译器决定的,并不一定是从左往右。2.按层从上到下遍历二叉树,每一层单独一行且从左往右输出front为队首指针,指向队首元素,rear为队尾指针... 阅读全文

posted @ 2010-06-01 14:53 DiaoCow 阅读(2748) 评论(0) 推荐(0) 编辑

2010年5月19日

总结下最近做的些题目

摘要: 动态规划1.Max Sequence ,Maximum sum这两题都是求最大m子段和(m = 2)最大m子段和(最大子段和在子段个数上的推广):设b[i][j]表示从前j项中i个子段和的最大值,且第i个子段和包含a[j];因此状态转移方程为:b[i][j] = Max(b[i][j-1] + a[j] , b[i-1][t] + a[j]); ( i-1 <= t < j)b[i]... 阅读全文

posted @ 2010-05-19 22:20 DiaoCow 阅读(380) 评论(0) 推荐(0) 编辑

2010年5月15日

IT职场求生法则《转》

摘要: 转自:http://www.cnblogs.com/umlonline/archive/2010/05/10/1731741.html#IT摘要:我在IT职场打滚超过10年了,从小小的程序员做到常务副总。相对于其它行业,IT职场应该算比较光明的了,但也陷阱重重,本文说说我的亲身体会,希望大家能在IT职场上战无不胜!作者:张传波软件知识大学www.umlonline.cn/school/正文:我会先... 阅读全文

posted @ 2010-05-15 20:30 DiaoCow 阅读(273) 评论(0) 推荐(0) 编辑

图论中的基本问题(未完)

摘要: 1.最小生成树a.kruskal 算法在遇到最小生成树问题时,我个人偏好用kruskal算法,实在是觉得其中并查集的运用太经典了。第一步:对所有的边从小到大排序;第二步:依次选取n-1条不会产生回路的边;(用并查集判断添加边<i,j>是否产生回路)模板:代码b.(朴素)prim算法从任意节点开始,依次添加最小边到集合中去,类似Dijkstra算法模板:代码相关题目(比较基础):Jung... 阅读全文

posted @ 2010-05-15 19:46 DiaoCow 阅读(369) 评论(0) 推荐(0) 编辑

2010年5月13日

位运算总结

摘要: 1.只能对整型数操作,例如char , short , int , and long(无论是有符号还是无符号)2.>> , <<优先级是小于算术运算符的,因此a = b + (c >> 1)表达式中的括号不能少。特别要注意的是右移>>运算符,对于无符号数而言,左边用0填补,而对于有符号数它可能用0填补,也可能用“符号位”填补,... 阅读全文

posted @ 2010-05-13 20:27 DiaoCow 阅读(302) 评论(0) 推荐(0) 编辑

2010年5月8日

线段树和树状数组题目总结(未完)

摘要: 1.Minimum Inversion Number首先要知道如何求一个序列的逆序数,比如2514 :2之前没有数大于它,所以为0,5之前也没有数大于它,所以为0,1之前2,5都大于它,所以为2,4之前只有5大于它,所以为1, 因此2514的逆序数为:0 + 0 + 2 + 1 = 3;从前面的描述中,我们可以发现,只要依次累计前面有几个数大于当前数即可。于是我们可以用一个数组b[n](初始化为0... 阅读全文

posted @ 2010-05-08 14:42 DiaoCow 阅读(1013) 评论(0) 推荐(0) 编辑

2010年5月7日

初识,线段树和树状数组

摘要: 这几天在网上看了很多关于线段树和树状数组的资料,感觉是很重要的数据结构,有必要边学边做下记录。1.线段树凡是关于线段树的资料,我想都有这么一张图,的确,它给了人最初的感性认识,其次这幅图在以后分析问题时也很有帮助:线段树的基本操作(由于线段树是一棵完全二叉树,且每条线段以类似“二分”的方法处理,因此时间复杂为O(logN)):[代码]  int l , r; //线段左右端... 阅读全文

posted @ 2010-05-07 10:41 DiaoCow 阅读(830) 评论(0) 推荐(0) 编辑

2010年4月24日

搜索总结

摘要: 1.Sticks对于WA,TLE很多次的人说,这道题绝对经典!我也是看了这位仁兄的代码才AC = =! , http://www.cnblogs.com/lotus3x/archive/2008/07/25/1251552.html代码剪枝1:因为如果这些sticks能够分成M段,那么每个stick一定都能找到属于自己的段(我感觉这是最重要的剪枝,之前一直TLE就是因为这里,程序没有及时的返回,一... 阅读全文

posted @ 2010-04-24 14:14 DiaoCow 阅读(403) 评论(0) 推荐(0) 编辑

2010年4月23日

批处理作业调度程序(优化了一个细节)

摘要: 王晓东书上的例子,但是我做了优化并没有使用f2[]数组,只是简单的用了一个f2和last变量。[代码]算法就是回溯+简单的剪枝(f < bestf) 阅读全文

posted @ 2010-04-23 16:15 DiaoCow 阅读(346) 评论(0) 推荐(0) 编辑

导航