Trie图和AC自动机的区别 Trie图是AC自动机的确定化形式,即把每个结点不存在字符的next指针都补全了。这样做的好处是使得构造fail指针时不需要next指针为空而需要不断回溯。 比如构造next[cur][i]的fail指针,cur为父节点,next[cur][i]为cur的儿子结点,如果 ...
分类:
其他好文 时间:
2016-04-20 13:27:32
阅读次数:
151
团队作业题目是做一个安卓计算器,而我的任务就是进行字符串的分析,我本该,说的简单点就是正确计算出一个表达式。 上学期和许清老师学了编译原理,想到LL(1)文法,使用递归下降可以正确分析一段文法,看了两天后,突然想明白,我只要计算出结果,并不需要具体的分析过 程比如消除做递归,消除回溯啊。再加上我的安 ...
分类:
其他好文 时间:
2016-04-18 20:42:41
阅读次数:
121
迷宫地形我们可以通过读文件的形式,通过已知入口逐个遍历坐标寻找通路。 文件如图: 每个坐标的位置用结构体来记录: 定义行列范围: 初始化迷宫数组:将通过读文件的方式获取的字符转成整型数据,保存在M行N列的数组中。 回溯查找通路: 利用栈来存储通路,通过上下左右四个方向依次遍历,如果该位置满足条件,就 ...
分类:
其他好文 时间:
2016-04-18 17:22:12
阅读次数:
205
/*
(一)初级迷宫问题:
0:代表通
1:代表不通
求迷宫的通路
(二)步骤:
1.创建迷宫
*从文件中读取迷宫
*开辟二维数组存放迷宫
2.寻找通路
*检查某位置是否为通
*出口位置判断
*走过的路用2标记
*利用栈回溯
(三)问题
1.解决回溯中重复探测:递归
2.最优解:迷宫的最短..
分类:
其他好文 时间:
2016-04-17 23:20:10
阅读次数:
262
题意: 在N*N(N <= 10)的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。 思路: 回溯 + 剪枝,有点类似于DFS全排列。利用emp[i]表示从左往右第 i ...
分类:
其他好文 时间:
2016-04-16 18:38:11
阅读次数:
115
题意: 给你一个数字N(N <= 20),要求你把这N个数组成一个环,环内的数字不能重复,左右相邻的两个的和是素数。给出最后的答案。 思路: 利用回溯剪枝算法,N个数,每个数有N种状态,枚举这N个状态,枚举过程中剪枝优化。 代码: ...
分类:
其他好文 时间:
2016-04-16 18:29:41
阅读次数:
163
题意: 给你一个 9*9 的矩阵,同一行相邻的两个元素用一个空格分开。其中1-9代表该位置的已经填好的数,问号(?)表示需要你填的数。输出这个数独的解,每组有且只有一个解。 思路: 记录下空缺的地方,每个空缺的地方有 9 中状态,DFS + 剪枝处理其他的,用scanf进行输入,gets() TLE ...
分类:
其他好文 时间:
2016-04-16 18:15:55
阅读次数:
171
题意: 输入一个 N * M的迷宫,这个迷宫里'S'代表小狗的位置,'X'代表陷阱,‘D’代表门,‘.’代表可行走的地方,小狗每次可以选择往周围的四个方向行走,问这个小狗能否正好T步找到门。 思路: 利用回溯 + 剪枝,这道题剪枝特别重要。 剪枝一: 可以把图看成这样: 1 0 1 0 10 1 0 ...
分类:
其他好文 时间:
2016-04-16 18:11:33
阅读次数:
188
问题描述:
这周的数据结构作业要求写一个程序判断输入为n的所有8皇后的情况, 皇后大致就是在一个n*n的棋盘上所有不同行列及不同对角线的格子排列
提示用书本上求解迷宫时用到的回溯法,也就是用到一个栈来保存当前满足的皇后,若进行不下去则回溯
采用C语言实现
代码:
1,文件 BetterQueen.h
里面主要定义了一些程序要用到的数据结构和函数接口
#ifndef BETTE...
分类:
编程语言 时间:
2016-04-16 10:58:40
阅读次数:
285
1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术 ...
分类:
编程语言 时间:
2016-04-15 07:03:47
阅读次数:
212