随笔分类 - 算法
摘要:找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。 代码如下:
阅读全文
摘要:原文链接: JAVA递归、非递归遍历二叉树
阅读全文
摘要:字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科...
阅读全文
摘要:原文链接:Dijkstra算法求最短路径(java)任务描述:在一个无向图中,获取起始节点到所有其他节点的最短路径描述Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra一般的...
阅读全文
摘要:原文链接:线段树(Segment Tree)1、概述线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,基本能保证每个操作的复杂度为O(lgN)。线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一...
阅读全文
摘要:一、定义字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。字典树与字典很相似...
阅读全文
摘要:实现的java代码如下(该算法只是将结果打印输出,并没有对原数组实现更改): 算法调用示例如下: 不进行打印,实现更改数组的改进算法(数组为字符数组,可根据需要进行更改): 算法调用示例如下:
阅读全文
摘要:转载:递归算法学习系列之八皇后问题Then-queens puzzle is the problem of placingnqueens on ann×nchessboard such that no two queens attack each other.Given an integern, r...
阅读全文
摘要:代码如下:public int Sum_Solution(int n) { int temp = n; boolean b = (temp>0)&&(temp += Sum_Solution(n-1))>0; return temp; }
阅读全文
摘要:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号代码如下: public int Add(int num1,int num2) { //实现各位相加 int sum = num1^num2; //实现进位 in...
阅读全文
摘要:1. 一次一密加密、解密算法一次一密密码系统的一个重要特性是密钥K为一个真随机序列,且密钥只使用一次。下面通过计算机的伪随机函数产生的随机序列作为密钥来简单演示一次一密的加密解密算法,代码示例如下: /** * 一次一密加密、解密算法 * @param str 明文(密文) ...
阅读全文
摘要:位加密解密算法即将明文信息转化为二进制数据,然后对这些二进制位进行加密便得到密文。位加密算法依托于计算机的强大的位处理能力,在实际应用中非常流行。现代密码学中的很多加密、解密算法方案都依赖于位加密、解密思路,例如,非常流行的序列密码方案。1. 位加密、解密算法 在java语言中,提供了6种位运算符...
阅读全文
摘要:替换加密解密算法方案的起源可以追溯到凯撒(Caesar)时代,据说凯撒为了保障情报的可靠性而发明了凯撒密码。凯撒密码是一种简单的置换密码,在加密时,字母表中的每个字母都用其后的第三个字母表示,例如,a用d表示,b用e表示,......。在解密时,只需要执行逆过程即可。1. 替换加密、解密算法随这历史...
阅读全文
摘要:换位密码算法方案,又称为置换加密方案,其根据一定的规则重新安排明文字母,使之成为密文。换位密码是最简单的密码学算法。1. 换位加密、解密算法换位加密解密的算法有很多种,这里介绍基于二维数组移位的换位加密、解密算法。二维数组移位的换位加密、解密算法即将明文字符串按照一个给定的顺序保存在二维数组中,然后...
阅读全文
摘要:寻找假银币是一个非常有趣的智力题目,寻找假银币的大意如下: 现在有8枚银币,其中一枚是假币。但是,从外观和做工上无法分辨哪枚是真币哪枚是假币,只知道假币的重量要比真币稍轻。则要求仅用一个天平,如何以最少的步骤寻找到假银币?1. 寻找假银币算法可以采用递归分治的思想来求解这个问题,操作步骤如下:(1...
阅读全文
摘要:八皇后问题是数学家高斯于1850年提出的,这是一个典型的回溯算法的问题。八皇后问题的大意如下: 国际象棋的棋盘有8行8列共64个单元格,在棋盘上摆放8个皇后,使其不能互相攻击,也就是说任意两个皇后都不能处于同一行、同一列或同一斜线上。问总共共有多少种摆放方法,每一种摆放方式是怎样的。 目前,数学...
阅读全文
摘要:窃贼问题是一个典型的最优化问题。窃贼问题的大意如下:有一个窃贼带着一个背包去偷东西,房屋中共有5件物品,其重量和价值如下:物品1:6公斤,48元物品2: 5公斤,40元物品3: 2公斤,12元物品4: 1公斤,8元物品5: 1公斤,7元。窃贼希望能够拿最大价值的东西,而窃贼的背包最多可装重量为8公斤...
阅读全文
摘要:1. 汉诺塔算法 static long count; //移动的次数 /** * 汉诺塔算法,将盘子从a移动到c * @param n 盘子数目 * @param a 柱子标识 * @param b 柱子标识 * @param c 柱...
阅读全文
摘要:1.括号匹配算法 //括号匹配算法 public void pipei()throws Exception{ char temp,ch; int match; //记录匹配结果 BufferedRea...
阅读全文