算法
文章平均质量分 76
lzc534650799
在校大学生
展开
-
全排列算法
1.递归实现全排列算法 设全排列的元素集合为S={r1,r2,r3……},Sn表示全部n个元素进行全排列的个数,则递推式为Sn=r1S(n-1)+r2S(n-2)+...+rnS(n-1);riS(n-1)的意思是以ri开头,剩下n-1个元素进行全排列的个数,显然S1=r1=1。 那么每次怎么得到以不同元素开头的S(n-1)呢,通过交换swap(当前第一个元素,后面的各个元原创 2017-04-07 21:16:38 · 323 阅读 · 0 评论 -
动态规划求字符串之间的编辑距离
1.编辑距离的概念 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑距离越小,两个串的相似度越大。 例如site和ste两个字符串的编辑距离是1 site->ste(删除i) ste->site(插原创 2017-05-11 10:28:41 · 957 阅读 · 0 评论 -
快速幂算法
1.概念 快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。2.算法代码 package cn.edu.hit;import java.util.Scanner;/** * 快速幂算法 * 利用二进制 * @author admin * */public class Exponentiation { pu原创 2017-05-24 14:45:55 · 398 阅读 · 0 评论 -
回溯法实现求解子集合和问题
1.回溯法简介 回溯法是一种在解空间搜索问题的解的方法。它在问题的解空间树种,按深度优先的策略,从根节点出发搜索解空间树。算法搜索至解空间树的任一节点时,先判断该节点是否包含问题的解。如果不包含,则跳过对以该节点为根的子树的搜索,逐层向其祖先节点回溯,否则进入该子树,继续按深度优先策略搜索。用回溯法求解问题的所有解的时,要回溯到根,且根节点的所有子树都被搜索遍才结束。用回溯法求问题的一个解时原创 2017-05-15 15:34:42 · 4657 阅读 · 0 评论 -
排列组合n个元素中选取m个元素
1.代码原创 2017-05-16 21:42:30 · 5395 阅读 · 0 评论 -
24点游戏
1.问题描述 输入4个整数,运用四则元素,可以加括号,判断其运算结果能不能是24。2.相关定理 s是一个有理数的集合。 函数f(s)定义如下: 如果s中只有一个元素,则f(s)=s; 否则,f(s)=∪f(s-{r1,r2}+{r}),r1,r2是s中的任意两个元素,r的取值为r1和r2进行四则运算的结果。 因此我们从s中任取两个元素,求其四则运算的原创 2017-05-16 16:55:41 · 303 阅读 · 0 评论 -
深度优先搜索求解迷宫问题
1.问题描述 定义一个二维数组: int maze[5][5] = { 0,1, 0, 0, 0, 0,1, 0, 1, 0, 0,0, 0, 0, 0, 0,1, 1, 1, 0, 0,0, 0, 1, 0,}; 它表示一个迷宫,其中的原创 2017-05-17 19:42:53 · 1174 阅读 · 0 评论 -
最长不下降子序列
package cn.edu.hit;import java.util.Scanner;/** * 求最长单调序列 * @author admin * */public class LongestMonotone { public static void main(String[] args) { Scanner in = new Scanner(System.in);原创 2017-05-28 15:09:39 · 495 阅读 · 0 评论