搜索
SimpleLifeT_T
github账号:lihongqiang
展开
-
三分
二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值。但当函数是凸性函数时,二分法就无法适用,这时三分法就可以“大显身手”~ 如图,类似二分的定义Left和Right,mid = (Left +Right) / 2,midmid = (mid + Right) / 2;如果mid靠近极值点,则Right = midmid;否则(即midmid靠近极值点),则Left=转载 2013-03-03 19:34:26 · 379 阅读 · 0 评论 -
lower_bound与upper_bound的用法
函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置.要记住:函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置,且last的位置是越界的!!~返回查原创 2013-08-14 15:55:33 · 748 阅读 · 0 评论 -
IDA*算法
IDA*算法是A*算法和迭代加深算法的结合。 迭代加深算法是在dfs搜索算法的基础上逐步加深搜索的深度,它避免了广度优先搜索占用搜索空间太大的缺点,也减少了深度优先搜索的盲目性。它主要是在递归搜索函数的开头判断当前搜索的深度是否大于预定义的最大搜索深度,如果大于,就退出这一层的搜索,如果不大于,就继续进行搜索。这样最终获得的解必然是最优解。 而在A*算法中,我们通过使用合理的估价函原创 2013-03-03 20:04:29 · 1413 阅读 · 0 评论 -
binary_search
二分查找#include #include #include #include using namespace std;bool myfunction (int i,int j) { return (iint main () { int myints[] = {9,2,3,4,5,4,3,2,1}; vector v(myints,myint转载 2013-03-03 19:57:47 · 322 阅读 · 0 评论 -
回溯
5.1 回溯法概述与穷举的“笨拙”搜索相比,回溯法则是一种“聪明”的求解效益更高的搜索法。下面介绍回溯设计及其应用,体会回溯法相对于穷举的特点与优势。5.1.1 回溯的概念有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往使用回溯法。回溯法是一种试探求解的方法:通过对问题的归纳分析,找出求解问题的一个线索,沿着这一线索往前试探,若试探成功,即得转载 2013-02-26 10:30:59 · 1269 阅读 · 0 评论 -
bfs
void bfs(){ queueq;//建队列 bool p[MAXN];//标记数组 queue.push(first);//入队列 while(!q.empty()) { tmp=q.front();//提取队首元素 p[tmp.x][tmp.y]=1;//标记处理 ...原创 2013-02-24 22:42:23 · 320 阅读 · 0 评论 -
dfs
采用栈的结构实现:void dfs(point start){ point next,tem; stackq;//建栈,最好写在函数里面 q.push(start);//入栈 while(!q.empty()) { tem=q.top();//提取栈顶元素 if(tem.x==m&&tem.y==n)原创 2013-02-24 22:18:55 · 352 阅读 · 0 评论 -
二分
用二分法的常见题型:二分搜索#include#include#include#include#include#include#includeusing namespacestd;int v;int a[1000];/*intbsearch(int x,int y){ int m; while(x {原创 2013-03-03 19:30:06 · 382 阅读 · 0 评论 -
A*算法
在前面的博客当中,其实我们已经讨论过寻路的算法。不过,当时的示例图中,可选的路径是唯一的。我们挑选一个算法,就是说要把这个唯一的路径选出来,怎么选呢?当时我们就是采用穷尽递归的算法。然而,今天的情形有点不太一样了。在什么地方呢?那就是今天的路径有n条,这条路径都可以达到目的地,然而我们在挑选的过程中有一个要求,那就是挑选的路径距离最短?有没有什么办法呢? 那么,这时候就要A*算法就可转载 2013-03-03 20:03:25 · 382 阅读 · 0 评论 -
寻路
寻路是游戏设计中需要使用到一种功能,那么我们怎么样以一个点作为起始点,快速地寻找到目标点呢?其实寻路的方法不难。一种简单有效的方法就是回溯法。如果我们从一个点出发,那么这个点周围肯定有若干条路,只要有一条路存在,我们就一直走下去,直到发现没有路走为止;要是发现路走不下去了怎么办,那就只好回头了,我们只能从剩下的选项中继续选择一条路,继续尝试。如果很不幸,所有的尝试都结束了,还是没有发现目标节点,那转载 2013-03-03 20:01:08 · 404 阅读 · 0 评论 -
二进制枚举
Sample Input4100 200 300 4003100 100 400 500100 -10 50 300100 100 -50 -50 Sample Output2 1 3题意: ZZY有 N(N)个目标,每个目标都有个只是达到的分数值,然后他有 M (M)个习惯,每个习惯对这 N个目标有影响 xi(i>=1 ,i),xi转载 2013-03-03 19:37:05 · 369 阅读 · 0 评论 -
double取整,计算时的精度问题
这是一题求多点路线问题,每两个点之间都可能存在关系,可以用dfs,不过如果有环的话就会爆栈,也可以有floy直接暴搜。关键在于浮点型计算的时候回丢精度,可以每次都不做浮点型的乘除法,最后在运算。不过这题在取整的时候为啥要减一个精度,还是不太明白。代码:#include #include #include #include #include #include #include原创 2013-08-26 15:28:41 · 1690 阅读 · 0 评论