算法
yishuige
这个作者很懒,什么都没留下…
展开
-
字符串全排列算法
#include #include #include using namespace std; void swap(char* x, char* y) { char tmp; tmp = *x; *x = *y; *y = tmp; } /* Function to print permutations of string This转载 2016-01-05 14:26:19 · 327 阅读 · 0 评论 -
快速算法
该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。 虽然快速排序称为分治法,但分治法这三个字显然无法很好的概括快速排序的全部步骤。因此我的对快速排序作了进一步的说明:挖坑填数+分治法: 先来看实例吧,定义下面再给出(最好能用自己的话来总转载 2016-01-06 14:56:43 · 238 阅读 · 0 评论 -
匈牙利算法
比如有三个人 要选择礼物,每个人都有自己喜欢的礼物,如果拿不到喜欢的礼物,宁愿放弃 int a[4][4] = { {0}, {0, 1,1 }, { 0, 0, 1,1 }, { 0, 1 } }; 第一个人喜欢第1、2个礼物 第二个喜欢第2,3个礼物,第三个人喜欢第一个礼物,问最佳匹配能匹配多少个 算法步骤; 该算法共涉及三个数组: a[][] 行表示人 、列表示礼物、如果a[原创 2016-01-07 19:36:41 · 288 阅读 · 0 评论 -
Prim Dijkstra 区别
转载 2016-01-27 15:26:07 · 370 阅读 · 0 评论 -
什么时候用DFS,什么时候用BFS?
什么时候用DFS,什么时候用BFS? 二维数组的题目,N小于20的,适用DFS。而一般 N,N这种,一定不可能用DFS去做。而且并不只是整个题目不能用DFS,其中的每一步也不能使用DFS。 BFS的基本步骤 1.将初始点(一个或多个)加入一个集合尾 2.从集合头取出点,判断初始点的周边点,将符合条件的点加入队列转载 2016-06-27 18:08:55 · 4997 阅读 · 4 评论 -
DFS算法
void dfs (int step) { 判断边界 尝试每一种可能 for (i = 1; i < n; i++) { book[i]==1; //处理前标记下一个节点 继续下一步 dfs (step+1); book[i]== 0; //还原处理过的节点,以进行下一次尝试 } 返原创 2016-07-21 10:33:51 · 333 阅读 · 0 评论