基础算法
文章平均质量分 88
SnailDove
在学本科生
展开
-
素数相关的问题
#includeusing namespace std;const int MAXV = 10000; //素数表范围bool flag[MAXV+1]; //标志一个数是否为素数int prime[MAXV+1]; //素数表,下标从0开始int size; //素数个数void genPrime(int max){memset(flag, true, sizeo转载 2014-04-07 17:09:04 · 970 阅读 · 0 评论 -
全排列以及相关算法
全排列以及相关算法在程序设计过程中,我们往往要对一个序列进行全排列或者对每一个排列进行分析。全排列算法便是用于产生全排列或者逐个构造全排列的方法。当然,全排列算法不仅仅止于全排列,对于普通的排列,或者组合的问题,也可以解决。本文主要通过对全排列以及相关算法的介绍和讲解、分析,让读者更好地了解这一方面的知识,主要涉及到的语言是C和C++。本文的节数:1.全排列的定义和公式:2.时间复转载 2013-05-18 10:43:54 · 2834 阅读 · 0 评论 -
回溯之子集树法
源代码如下,比较简单,可以参考《计算机算法设计与分析》王晓东回溯法的基本思想(1)针对所给问题,定义问题的解空间;(2)确定易于搜索的解空间结构;(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。常用剪枝函数:用约束函数在扩展结点处剪去不满足约束的子树;用限界函数剪去得不到最优解的子树。用回溯法解题的一个显著特征是在搜索过原创 2014-06-01 15:54:23 · 1021 阅读 · 0 评论 -
动态规划之最长公共子序列
算法总体思想 动态规划(Dynamic Programming)是通过组合子问题的解而解决整个问题的。分治是指将问题划分成一些独立的子问题,递归地求解各子问题,然后合并子问题的解而得到原始问题的解,与此不同,动态规划适用于子问题不是独立的情况,也就是各个子问题包含公共的子问题。在这种情况下,采用分治法会做许多不必要的工作,即重复地求解公共地子问题。动态规划算法对每个子问题只求解一次,将其结果保原创 2014-06-01 18:11:02 · 1144 阅读 · 0 评论