一、回溯法 回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 二、八皇后问题 (一)问题描述 1.png 在国 ...
分类:
其他好文 时间:
2019-05-17 00:12:41
阅读次数:
178
方法一:回溯法(用递归) 最基本可以将triangle数组看做一个邻接矩阵的变形,采用深度优先搜索的方法自顶向下遍历,如果triangle数组长度为n那么时间复杂度为O(2^n)(或者如果元素个数为N,那么复杂度N(log(N)) 方法二:动态规划 自底向上递推:可以使用一维数组来完成,从而O(n) ...
分类:
其他好文 时间:
2019-05-06 10:34:35
阅读次数:
178
1. 五大算法 贪心算法: 局部最优解法 分治算法: 分成多个小模块,与原问题性质相同 动态规划: 每个状态都是过去历史的一个总结 回溯法: 发现原先选择不优时,退回重新选择 分支限界法 贪心算法: 局部最优解法 分治算法: 分成多个小模块,与原问题性质相同 动态规划: 每个状态都是过去历史的一个总 ...
分类:
编程语言 时间:
2019-04-09 16:50:54
阅读次数:
171
有这么一个游戏: 写出一个11至NN的排列a_iai?,然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少11,直到只剩下一个数字位置。下面是一个例子: 3,1,2,43,1,2,4 4,3,64,3,6 7,97,9 1616 最后得到161 ...
分类:
其他好文 时间:
2019-04-07 13:05:55
阅读次数:
157
题目描述 房间里放着n块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处。 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块奶酪的坐标。 两点之间的距离公式=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) ...
分类:
其他好文 时间:
2019-04-06 16:55:18
阅读次数:
118
方法一:利用递归 利用递归求全排列的过程真的很难理解,先把代码贴上来吧 里面有几个坑要注意,一是通过字符串索引是不能修改字符串的,因此还是要把字符串转化为数组;二是注意对重复字符的处理 方法二:回溯法 ...
分类:
编程语言 时间:
2019-04-05 22:42:47
阅读次数:
394
class Solution { public: map dict; vector letterCombinations(string digits) { dict['2'] = "abc"; dict['3'] = "def"; dict['4'] = "ghi"; dict['5'] = "jk... ...
分类:
其他好文 时间:
2019-03-28 18:14:40
阅读次数:
189
背包问题——dfs 问题描述 解决思路 采用DFS搜索 其实也是回溯法 代码实现 #include<iostream> #include<vector> using namespace std; struct goods { int w; int v; int flag; }; vector<goo ...
分类:
其他好文 时间:
2019-03-23 22:19:36
阅读次数:
146
问题描述 " 什么是八皇后? " 题目链接 " N皇后 " 解法 ? 直接在N N的棋盘上进行深搜,试探着下棋,也就是回溯法。 ? 对于一个皇后来说,我们需要判断她的 八个方向 ,即 主对角线,副对角线,行,列 ? 1. 确定状态 ? 第一眼的感觉是要用 四个数组来储存情况,但时间上只需要三个 ,把 ...
分类:
其他好文 时间:
2019-03-22 19:00:13
阅读次数:
160
之前已经学习过回溯法的一些问题,从这篇文章开始,继续深入学习一下回溯法以及其他经典问题。 回溯法有通用的解题法之称。用它可以系统的搜索一个问题的所有解或任一解,回溯法是一个既带有系统性又带有跳跃性的搜索算法。 它的问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结 ...
分类:
编程语言 时间:
2019-03-21 09:12:22
阅读次数:
155