一. 基本思想 分治法的基本思想是,将一个难以直接解决的大问题,分割成一些规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些子问题,然后将各子问题的解合并得到原问题的解。(分-治-合)二. 适用条件 分治法所能解决的问题一般具有以下几个特征: 该问题的规模缩小到一定的程度就可以容易地....
分类:
其他好文 时间:
2015-05-13 21:42:57
阅读次数:
211
自荐者和推荐者请留言
基本算法
贪心算法:贪心算法 作者:独酌逸醉
贪心算法精讲 作者:3522021224
递归和分治:递归与分治策略 作者:zhoudaxia
图论
图的遍历(DFS和BFS): 图的遍历 作者:jefferent
最小生成树(Prim算法和Kruskal算法): 贪心算法--最小生成树 作者:独酌逸醉
Dij...
分类:
编程语言 时间:
2015-03-11 17:18:33
阅读次数:
185
递归与分治策略(一)
简而言之,递归就是自己调用自己。
递归算法:直接或者间接地调用自身的算法。
递归函数:用函数自身给出定义的函数。
注意:每个递归函数都必须有非递归定义的初始值,以确保递归函数完成计算。
下面通过两个例子来介绍递归的特点
例1 阶乘函数
阶乘函数递归地定义为:
n!=1 (n=0)
或者
n!=n(n-1)! (n>0)
下面用一段简单的...
分类:
编程语言 时间:
2015-03-02 14:58:09
阅读次数:
171
棋盘覆盖2^k的棋盘格子,有一个缺陷,用L形状的的拼图把棋盘覆盖。每次涂抹的时候先按照缺陷的四周涂抹……23333参考int dir[4][2] = {{0,0},{0,1},{1,0},{1,1}}; ///棋盘L形状对应的分别缺少那个格子int graph[10000][10000];void....
分类:
其他好文 时间:
2015-02-24 22:12:17
阅读次数:
174
最大字数组问题是递归与分治算法中的经典问题:问题:求一个数组中相加可以获得最大值的子数组,子数组是指原数组中任意连续的一段代码:#include<iostream>
usingnamespacestd;
intmax_mid(int*a,intmid,intlow,inthigh)
{
intml=a[mid];
intmr=0;
intsum=ml;
for(inti=..
分类:
编程语言 时间:
2014-10-21 19:54:46
阅读次数:
204
近日复习了一些算法知识,小记于此递归与分治法直接或间接地调用自身的算法称为递归算法。 递归是算法设计与分析中经常使用的一种技术,描写叙述简单且易于理解。分治法的设计思想是将一个规模为n难以解决的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题同样。递归地解这些子问题,然后将各子问题的解合...
分类:
其他好文 时间:
2014-10-05 18:39:58
阅读次数:
233
快排具有递归和分治的思想,实现步骤如下。
第一步:对数组A中的第一个元素x执行操作,使得数组变成新的数组B,B中C段表示小于x的元素,D段表示大于x的元素
第二步:把C段,D段,当成2个独立的数组,然后对这2个数组执行类似于第一步中A的操作
第三步:这样B和D数组又同样被分成了三部分,依次类推反复执行相同的操作。
代码:
#include
using namespace std;...
分类:
其他好文 时间:
2014-09-30 08:22:22
阅读次数:
175
#include
#include
using namespace std;
/*
* 求整数n的划分
* n, m
* 在整数n的所有划分中, 最大加数 n1<=m 的划分记做p(n, m);
* 1. p(n, 1) = 1; (m == 1)
* 2. p(n, n) = 1 + p(n, n-1); (n == m)
*...
分类:
其他好文 时间:
2014-09-01 10:47:42
阅读次数:
144
上一节,我们讨论了01背包问题,说明了*递归与分治法 与 动态规划DP的区别和联系,介绍了缓存的概念*。以下,我们用DC、DP、cache分别表示分治法、动态规划和缓存。本节,我们讨论01背包的另外两种形似——
完全背包和多重背包问题,分析DP问题的另外一些情况。
例一:完全背包问题
同样有n种价值和重量分别为weight[i] and value[i], 背包大小W。限制条...
分类:
其他好文 时间:
2014-07-21 15:18:15
阅读次数:
295