暴力搜索(广搜),注意要先判断再加入队列,否则会超内存
#include
#include
#include
#include
#define maxn 100000+5
using namespace std;
int dir[2]={1,-1};
int vis[maxn]={0};
int n,m,re;
int maxx;
struct stu
{
int x,s;
};
voi...
分类:
其他好文 时间:
2015-03-31 09:07:23
阅读次数:
136
对于暴力搜索法,当搜索词对应的字符与字符串中的字符不匹配时。将搜索词整个后移一位,再从头逐个比较。这样做虽然可行,但是效率很差,因为你要把”搜索位置”移到已经比较过的位置,重比一遍。应用KMP算法之后,则有:
移动位数 = 已匹配的字符数 - 对应的部分匹配值
“部分匹配值”就是”前缀”和”后缀”的最长的共有元素的长度。KMP算法实现代码如下:void prefixFun(char *pat...
分类:
编程语言 时间:
2015-03-29 20:59:34
阅读次数:
259
一般来说求两个数最大公约数,我们最先想到的是先找到两个数中较小的数,
然后从较小的数开始递减暴力搜索,如果能同时被两个数整除,那么这个数就是最大公约数,不能则继续递减。
但是当两个数很大的时候,这个算法的效率就变得很差,这时我们就需要一个高效算法。
这里我们利用的是中国古代的辗转相除法,关于辗转相除法的思想可以自行百度,我在这里直接贴代码
#include
int gcd(int a, i...
分类:
编程语言 时间:
2015-03-29 12:19:26
阅读次数:
123
简述: LCS问题,即最长公共子序列问题,给定两个序列X={x1, x2, …, xm}和Y={y1, y2, …, yn},求X、Y最长的公共子序列。与LIS类似,LCS也是可以不连续的。解题思路:本人觉得在这个问题上算法导论讲的很好,所以在此我主要是整理。
1、首先我们来考虑暴力搜索求解的方法,我们要暴力枚举X的所有子序列,然后再看看是不是也是Y的子序列,这样的方法,显然时间复杂度是指数级的,...
分类:
其他好文 时间:
2015-03-28 08:58:06
阅读次数:
177
G - Shuffle'm Up
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u
Submit Status Practice POJ 3087
Description
A common pastime for poker players at a poker table is to shuf...
分类:
其他好文 时间:
2015-03-21 14:06:17
阅读次数:
169
1.题目描述:点击打开链接
2.解题思路:本题要求重涂尽量少的一些面,使得n个立方体完全相同。看上去很棘手的一个问题。第一种想到的方法就是暴力搜索。但首先要弄明白的一个问题是:一个正方体有几种不同的旋转方式?如果我们选择一个面作为顶面,有6种选法;接下来选一个面作为前面,有4种选法,此时该正方体的“姿态”就确定了,根据乘法原理,一共有6*4=24种姿态(这里用姿态代指旋转方式,一种姿态就是一种旋...
分类:
其他好文 时间:
2015-03-12 19:24:21
阅读次数:
149
求 子串 的 位置 有两种方法,一种是暴力搜索法,另一种就是KMP 算法。他们的效率 在一般的情况下,区别不大。但是在 串的 变化 范围特别小的情况下,例如 只有 0 和 1,KMP 的时间复杂度是 O(m+n),而暴力搜索法定时间 复杂度 是 O(m*n),(m,n分别指 子串 和 母串的 长度)
暴力搜索非常简单,下面给出代码:
// KMP.cpp : 定义控制台应用程序的入口点。
//...
分类:
编程语言 时间:
2015-03-12 11:37:18
阅读次数:
177
一:简介
(1)相信做过ACM的人,都很熟悉图和树的深度优先搜索;算法里面有蛮力法 —— 就是暴力搜索(不加任何剪枝的搜索);
(2)蛮力搜搜需要优化时,就是需要不停的剪枝,提前减少不必要的搜索路径,提前发现判断的过滤条件;
(3)剪枝的核心问题就是设计剪枝判断方法,哪些搜索路径应当舍弃,哪些搜索路径不能舍弃(保留);
(4)高效的剪枝过滤条件需要从局部和全局来考虑问题,发现内在的规律。
...
分类:
其他好文 时间:
2015-03-06 09:39:30
阅读次数:
170
折半枚举降低暴力搜索的复杂度 在有序数组中用二分查找方式统计有多少值为a的元素的写法
分类:
其他好文 时间:
2015-03-04 20:57:36
阅读次数:
154