随笔分类 - 数据结构和算法学习
Python数据结构与算法设计总结篇
摘要:1.Python数据结构篇 数据结构篇主要是阅读[Problem Solving with Python](http://interactivepython.org/courselib/static/pythonds/index.html)时写下的阅读记录,当然,也结合了部分[算法导论](http:...
阅读全文
【原创】Java与数据结构(下篇:图)
摘要:1. 有向图的BFS和DFSpackage graph;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.List;/** * 有向图的表示和遍历 <br> * 邻接矩阵和邻接表表示法和BFS/DFS * * @author yinger */public class DirectedGraphTraverse { public static void main(String[] args) { // matrix for graph --- condition:graph is...
阅读全文
【原创】Java与数据结构(中篇:树)
摘要:1. 二叉树 遍历算法package tree;import java.util.ArrayDeque;import java.util.Queue;/** * 二叉树的四种遍历方式<br> * 先序,中序,后序,广度优先遍历 * * @author yinger */public class IteratorAlgorithm { public static void main(String[] args) { TreeNode root = new TreeNode("0"); TreeNode node1 = new TreeNode("1&qu
阅读全文
【原创】Java与数据结构(上篇:排序算法)
摘要:花了两天的时间坐在图书馆里,终于写完了所有主要的数据结构,包括其中的算法部分,呵呵,保研和面试的第一关估计没问题了,下面就是看OS和Network了心得:纸上得来终觉浅,绝知此事要躬行!当自己回想着算法的整个过程,然后一行一行的敲下来,发现算法太精辟了,看似简单,写起来可真不是那么回事,而且,写多了,熟悉了,思路就快了,写起来就得心应手了!可能你会觉得算法和数据结构对现在的程序员来说已经不重要了,但是,我觉得,好的程序员如果不懂数据结构和算法那么他就写不出更好的代码!作为一个计科男,掌握数据结构和算法是必须的!好了,下面附上各种排序算法的Java实现,算法的思想不介绍了,网上有很多,如果发现我
阅读全文
KMP算法学习
摘要:(1) 参考网址: KMP算法: http://www.cnblogs.com/dolphin0520/archive/2011/08/24/2151846.html --- 用递推思想和直接法两种方式求解next数组 KMP学习心得: http://www.java3z.com/cwbwebhome/article/article19/res023.html?id=3737 --- 当一个字符串以0为起始下标时,next[i]可以描述为"不为自身的最大首尾重复子串长度"。 KMP字符串模式匹配中模式函数: http://www.java...
阅读全文
堆的学习总结
摘要:参考书籍《Java数据结构与算法》 第12章 堆1.堆的引入优先级队列 和堆2.堆的特点①堆是完全二叉树②堆一般用数组来保存③堆中的每个节点都满足一定的条件,也就是当前节点的关键值必须大于等于(或者小于等于)它的子节点的关键值3.堆的操作(以最大堆为例)(1)移除最大的节点从堆中删除节点的过程:删除的一定是堆的根节点,删除之后将堆数组的最后一个元素bottom放在根节点的位置,然后比较bottom和它的孩子中key值较大的那个child,如果那个孩子的key值更大,那么就交换bottom和child节点的位置,同理,按照上面的步骤继续比较,直到bottom处在满足堆条件的位置上。这里有一个向下
阅读全文
凸多边形最优三角剖分问题
摘要:参考书籍《算法设计与分析》 王晓东 动态规划1.问题描述(注:是所有的三角形的权值之和,不是只计算边和弦的权值之和)2.分析3.编码实现:/*** @Author:胡家威* @CreateTime:2011-11-10 下午12:31:16* @Description:凸多边形的最优三角剖分*/package ex2;public class Triangulation {private int n;// n多边形private int[][] weight;// 边的权值数组public Triangulation(int n) {this.n = n;this.weight = new i
阅读全文
ZOJ 1108 FatMouse's Speed 动态规划
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=108题目大意:证明老鼠重量越重,速度越慢,给你一组老鼠的数据(包括重量和速度),要求输出满足前面条件的最长的子序列的老鼠编号首先,按照老鼠的重量进行升序和速度的降序排列;然后,根据动态方程求解len[0]=1;len[i]=max{len[j]}+1 (0<=j<i)最后,输出老鼠的编号顺序,为了能够输出顺序的编号,所以要给老鼠一个index和preIndex,最后输出时最好的方法是采用递归的方式注意:1.题目的结束是以文件结尾为结束符,在C和C++中是
阅读全文
动态规划题目一:最长单调递增子序列
摘要:习题3-1:最长单调递增子序列[算法设计与实验题解 page 63]问题描述:所谓子序列,就是在原序列里删掉若干个元素后剩下的序列,以字符串"abcdefg"为例子,去掉bde得到子序列"acfg"现在的问题是,给你一个数字序列,你要求出它最长的单调递增子序列。输入:多组测试数据,每组测试数据第一行是n(1<=n<=10000),下一行是n个比1e9小的非负整数输出:对于每组测试数据输出一行,每行内容是最长的单调递增子序列的长度样例输入:51 2 4 8 1651 10 4 9 790 0 0 1 1 1 5 5 5样例输出:533我的Jav
阅读全文
[转载]24点游戏
摘要:原文链接:http://eol.gzu.edu.cn/eolcourse/common/blog/userBlogArticleView.jsp?bkt=%2Feolcourse%2Fcommon%2Fblog%2FuserBlogColumnArticle.jsp%3FblogId%3D6444%26columnId%3D2664&articleId=6164 相当推荐,暂时我还没有时间看,自...
阅读全文
[原创]表达式求值:经典算法 <Java版本>
摘要:1.课件:表达式的三种表示形式及其规律 2.后缀表达式求值以及如何实现 Knuth 将此概括为三个步骤: 对中缀表达式进行语法分析 中缀表达式到后缀表达式的转换 对后缀表达式求值 C语言建议代码是实现: 3.我的Java语言实现,利用了Java自身的优越性,可以更好的处理一些内容 (做这个是为了完成数据结构的课程设计,后期会有相应的文章介绍我的作品《算术24游戏》,谢谢关注) /...
阅读全文
[转]树状数组
摘要:来源:http://www.cnblogs.com/yykkciwei/archive/2009/05/08/1452889.html今天来讨论一下树状数组.问题提出:已知数组a[],元素个数为n,现在更改a中的元素,要求得新的a数组中i到j区间内的和(1<=i<=j<=n).思考:对于这个问题,我们可以暴力地来解决,从a[i]一直累加到a[j],最坏的情况下复杂度为O(n),对于m次change&querry,合起来的复杂度为O(m*n),在n或m很大的情况下,这样的复杂度是让人无法忍受的.另外,如果没有元素的变更,我们完全可以存储sum[1,k](k=1,2,……
阅读全文
快速幂取模
摘要:快速幂取模就是在O(logn)内求出a^n mod b的值。算法的原理是ab mod c=(a mod c)(b mod c)mod c因此很容易设计出一个基于二分的递归算法。以下是我的代码,以下代码必须保证输入的是合法的表达式,比如不能出现0^0 mod b:long exp_mod(long a,long n,long b){ long t; if(n==0) return 1%b; if(n==1) return a%b; t=exp_mod(a,n/2,b); t=t*t%b; if((n&1)==1) t=t*a%b; return t;}关于其中的一个按位与运算,来自百度知
阅读全文
浙公网安备 33010602011771号