
算法
PSAR
这个作者很懒,什么都没留下…
展开
-
递归:递归法解决排列问题
程序大致结构:run(ele,)原创 2015-02-21 16:04:55 · 667 阅读 · 0 评论 -
递归与分治:循环赛日程表
问题描述:有2的n次方个运动员,需要在(2的n次方)-1天内完成比赛。比赛规则如下: 1)一位运动员每天只能与一位运动员比赛 2)一位运动员要与其他n-1为运动员进行比赛问如何安排日程?问题实质:要求矩阵内每行每列都不重复。 基本思路:将所有运动员分为两半 对这两半分别独原创 2015-06-26 12:19:51 · 2196 阅读 · 0 评论 -
贪心算法:哈弗曼编码
哈弗曼树构建:每次选取频率最小和次小的两个字符; 将这两个字符从序列中删去; 新建一个节点 按照左小右大,分别作为新节点的左右子树; 新节点的频率为其左右子树频率之和;原创 2015-06-26 14:26:04 · 975 阅读 · 0 评论 -
递归与分治法
分治法设计思想:将一个规模较大的问题,分解成若干规模较小但问题的性质与原问题相同的子问题,然后将这些子问 题逐个击破,再将子问题的解合并为原问题的解。基本步骤:1)分解:将原问题分解为若干子问题 2)解决:若问题规模足够小,可直接解决时,就直接解决;否则,递归解决这些子问题原创 2015-06-26 10:57:59 · 1338 阅读 · 0 评论 -
递归与分治:快速排序法
基本思想:将待排序列分为两半,一半比基准元素大,另一半比基准元素小,然后对这两半元素重复上述过程。核心代码:void quick_sort(int low,int hig){ if(low>=hig) { //获取划分点所在的下标 int p=partion(low,hig); //对划分点前半序列进行快排原创 2015-06-26 12:02:10 · 496 阅读 · 0 评论 -
递归与分治:二分查找
二分查找只是一个递归的问题,并不体现分治法的思想。算法前件:带查找序列有序(从左到右,非减序或非升序)基本思想:先将待查元素与中间元素比,若比中间元素大,则在序列的后一半继续查找;若比中间元素小,则在序列的前一半继续查找。算法描述: 1.与待查序列第一个元素比,若等于,则返回该元素下标,结束比较 2.与原创 2015-06-26 11:26:37 · 955 阅读 · 0 评论 -
回溯算法:基本思想以及方法
思想:沿着一条向前走,能走则走;不能走则退回来,试者走其他路。以深度优先方式遍历子集树。基本方法:1)定义问题的解空间(子集树,排列树) 2)确定剪枝条件 3)确定结束条件注意事项:在回溯的函数体内,不能改变问题的状态,即进入函数前,状态是s,则函数完成后,状体也应该是s;例题:字符串转换原创 2015-09-13 16:06:37 · 2309 阅读 · 0 评论 -
回溯法:字符串转换
问题描述: 通过栈交换字母顺序。给定两个字符串,要求所有的进栈和出栈序列(i表示进栈,o表示出栈),使得字符串2在求得的进出栈序列的操作下,变成字符串1。输出结果需满足字典序。例如TROT 到 TORT:[i i i i o o o oi o i i o o i o] 输入给定两个字符串,第一个字符串是源字符串,第二个字符是目标目标字符串。原创 2015-09-13 16:27:36 · 1162 阅读 · 0 评论