因为把第三节写完了,所以必须要做个总结。 首先题目是递归与分治。 要我说其实主题就三个,递推(并由递推引进递归,毕竟递推要比递归好理解些),组合计数,分治。 一,递推。(递归) 1,什么是递推。 一串序列存在一种关系,可以通过这种关系从前项或前几项中推出后面的项。 2,怎么个应用法? 一般你需要做三 ...
分类:
其他好文 时间:
2019-10-04 17:11:56
阅读次数:
73
二分搜索算法是分支策略的典型应用,具体是在给定的有n个元素的已排序序列a中找出一个特定元素。 基本思想:将n个元素分为两半,取a[n/2]与x进行比较, 如果x<a[n/2],继续在数组a的左半部分搜索。 如果x>a[n/2],继续在数组a的右半部分搜索。 (图片源自百度图片) 查找算法对比: 1、 ...
分类:
其他好文 时间:
2019-02-28 23:12:22
阅读次数:
393
汉诺塔问题是一个经典问题。 题意理解:有A,B,C三个柱子,将A柱子上的N个盘子(从小到大排列)移到C柱子上,每次只允许移动一个盘子,并且保证每个柱子上的盘子的排列都是从小到大。 分析:由题意可知,如果要将A上的盘子移动到C,那么肯定需要借助C。 首先将A上的盘子从上到下依次编号为1-n。 运用整体 ...
分类:
其他好文 时间:
2019-02-28 21:11:03
阅读次数:
194
1 #include <ctime> 2 #include <iostream> 3 using namespace std; 4 5 template <class Type> 6 void Swap(Type &x,Type &y); 7 8 inline int Random(int x, i ...
分类:
编程语言 时间:
2019-02-26 01:12:20
阅读次数:
242
递归和分治天生就是一对好朋友。所谓分治,顾名思义,就是分而治之,是一种相当古老的方法。 在遥远的周朝,人们受生产力水平所限,无法管理庞大的土地和众多的人民,因此采用了封邦建国的封建制度,把土地一层一层划分下去,以达到分而治之的目的,这也许是最古老的分治法了: 分治的步骤 正像分封土地一样,分治法的目 ...
分类:
其他好文 时间:
2019-01-27 19:08:56
阅读次数:
266
递归与分治策略 二分搜索技术 我们所熟知的二分搜索算法是运用分治策略的典型例子,针对这个算法,先给出一个简单的案例。 目的:给定已排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定的元素x。 我们首先想到的最简单的是用顺序搜索方法,逐个比较a[0:n-1]中元素,直至找出元素x或搜索遍整 ...
分类:
编程语言 时间:
2018-12-22 01:29:39
阅读次数:
215
? 很小的时候,我就很好奇,我大天朝$13$亿人,人口普查怎么查出来的。 ? 然后我脑补了一下,一个苦行僧手里拿着一本册子从南走到北,从白走到黑,碰到一个人就画正字。然后用双脚丈量一波全国的土地,统计出我国人口。 ? 这刚刚好也能解释,为啥人口普查那么久才进行一次了。因为统计员统计一次要很多年。 ? ...
分类:
其他好文 时间:
2018-09-30 11:27:15
阅读次数:
167
分治法思想 把问题分解为k个规模较小的子问题,这些子问题(互相独立且)结构与原来问题的结构相同,再递归地求解这些子问题。 问题分解成子问题;(divide) 当达到某个阈值n0时,给出直接求解的方法;(conquer) 最后把各个子问题的解合并起来,得到原来问题的解;(merge) 算法设计伪代码 ...
分类:
其他好文 时间:
2018-04-07 17:47:58
阅读次数:
177
1 #include"iostream.h" 2 3 int BinarySearch(int a[],int left,int right,const int& x) 4 { 5 if(left<right) 6 { 7 int middle = (left+right)/2; 8 if(x==a ...
分类:
其他好文 时间:
2017-10-22 22:02:19
阅读次数:
139
一、算法分析初步 1、渐进时间复杂度 2、上界 3、分治 4、正确对待算法分析结果 二、再谈排序与检索 1、归并排序 2、快速排序 3、二分查找 三、递归与分治 四、贪心 1、背包 2、区间 3、huffman编码 五、算法设计方法 1、构造法 2、中途相遇法 3、问题分解 4、等价转换 5、扫描法 ...
分类:
编程语言 时间:
2017-10-15 11:21:03
阅读次数:
141