packagearithmetic;/***Java实现KMP算法**思想:每当一趟匹配过程中出现字符比较不等,不需要回溯i指针,*而是利用已经得到的“部分匹配”的结果将模式向右“滑动”尽可能远*的一段距离后,继续进行比较。**时间复杂度O(n+m)**@author 青梅**/publicclas...
分类:
编程语言 时间:
2014-11-25 12:15:35
阅读次数:
179
这里回溯算法还要好好研究一下试探一个位置是否有效,如果有效,试探下一个位置(DFS),如果无效则回退1.定义一个解空间,存放一个解的空间2.DFS(暂且认为是DFS)这里N皇后用的是递归+回溯实现的 1 package com.gxf.backtracking; 2 3 /** 4 * n皇后问.....
分类:
编程语言 时间:
2014-11-24 22:03:28
阅读次数:
204
【题目】
Given a 2D board and a word, find if the word exists in the grid.
The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or ...
分类:
其他好文 时间:
2014-11-24 20:56:08
阅读次数:
177
题意:
输入n个正整数和一个目标值,可以在这n个数中间填充+ - × /号进行运算,运算从左到右进行,不考虑运算符的优先性。 并且给定下面的规则:
1.填充符号时n个数的顺序不能改变。
2.填充除号的时候必须保证结果为整数。
3.每一步的结果必须在-32000~32000之间。
问是否可以求得目标值。
思路...
分类:
其他好文 时间:
2014-11-23 01:58:56
阅读次数:
185
求最长公共子串可以先求最长公共子串的长度,并且记录那些公共子串字符的长度以及字符,然后通过回溯可以找到所有的公共子串。下面是求最长公共子串长度的动态规划方法。1:决策,我们在最后一步需要做的决策是,是否要将A[n],B[m]加入公共子串序列中。2:由 1 可知,若以DP[i][j]表示A[1..i]...
分类:
编程语言 时间:
2014-11-22 14:29:58
阅读次数:
140
Given a collection of numbers, return all possible permutations.For example,[1,2,3]have the following permutations:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,...
分类:
其他好文 时间:
2014-11-22 00:37:46
阅读次数:
186
题意: 给出一个数T,再给出n个数。若n个数中有几个数(可以是一个)的和是T,就输出相加的式子。不过不能输出相同的式子。分析: 运用的是回溯法。比较特殊的一点就是不能输出相同的式子。这个可以通过map来实现:map把字符串(可以是C语言的字符串)和整数联系起来了。我们可以把相加起来的几个数变成一.....
分类:
其他好文 时间:
2014-11-21 20:26:05
阅读次数:
298
这个题就是给出一个数字n,表示有n个数,编号为1~n,
然后要求我们将这n个数连起来变成一个环,要求任意两个数相加所得值必须为素数。
如果满足条件就将这个环输出来!
这个题:dfs+回溯+判断。然后注意先是将值放到一条线上,
如果头尾相加和也为素数,则可以连成环,然后就可以输出了!...
分类:
其他好文 时间:
2014-11-21 09:10:45
阅读次数:
136
Given a set of distinct integers,S, return all possible subsets.Note:Elements in a subset must be in non-descending order.The solution set must not co...
分类:
其他好文 时间:
2014-11-21 01:17:47
阅读次数:
293
题意 把1到n这n个数以1为首位围成一圈 输出所有满足任意相邻两数之和均为素数的所有排列
直接枚举排列看是否符合肯定会超时的 n最大为16 利用回溯法 边生成边判断 就要快很多了
#include
using namespace std;
const int N = 50;
int p[N], vis[N], a[N], n;
int isPrime(int k)
{
fo...
分类:
其他好文 时间:
2014-11-20 17:03:58
阅读次数:
190