题目描述:http://ac.jobdu.com/problem.php?pid=1368
输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。解析:
需要找出从根节点到叶节点的路径和等于target,可以想到用深度搜索(前序遍历)方式,当访问某节点时,将该节点添加到路径上,如果该节点是叶节点且恰好等于tar...
分类:
其他好文 时间:
2015-07-27 11:14:29
阅读次数:
163
题目:八皇后问题:在8 X 8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处于同一行,同一列或者同意对角线上,求出所有符合条件的摆法。思路:1、回溯法数据结构:由于8个皇后不能处在同一行,那么肯定每个皇后占据一行,这样可以定义一个数组A[8],数组中第i个数字,即A[i]表示位于第...
分类:
编程语言 时间:
2015-07-24 17:49:19
阅读次数:
183
题目:输入一个字符串,输出该字符串的字符的所有组合,比如输入字符串:abc,输出a、b、c、ab、ac、bc、abc。思路:回溯法建立一个数组记录字符串中的字符出现与否,如字符串abc,int A[3],A={1,0,1},就代表字符ac。代码:#include #include using nam...
分类:
编程语言 时间:
2015-07-24 16:03:43
阅读次数:
139
DFSTime Limit:1000MSMemory Limit:32768KB64bit IO Format:%I64d & %I64uDescription在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任...
分类:
其他好文 时间:
2015-07-22 18:11:58
阅读次数:
97
1、概念
回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。
回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。
许多复杂的...
分类:
编程语言 时间:
2015-07-21 14:54:06
阅读次数:
157
一、动态规划算法
动态规划算法通常基于一个递推公式及一个或多个初始状态。当前问题的解将由上一次子问题的解推出。使用动态规划来解题只需要多项式复杂度,因此它比
回溯法、暴力法要快。首先,我们要找到某个状态的最优解,然后在它的帮助下,找到下一个状态的最优解。要做的是抽象出动态规划的状态和状态转移方程(递推公式)。
二、编辑距离
1、问题描述
设A和B是2个字符串。要用最少的字符操...
分类:
其他好文 时间:
2015-07-21 01:36:40
阅读次数:
226
题目
某寺庙里7个和尚:轮流挑水,为了和其他任务不能冲突,各人将有空天数列出如下表:
和尚1: 星期二,四;
和尚2: 星期一,六;
和尚3: 星期三,日;
和尚4: 星期五;
和尚5: 星期一,四,六;
和尚6: 星期二,五;
和尚7: 星期三,六,日;
请将所有合理的挑水时间安排表
思路 回朔法求解
回朔法即每进行一步,都试图在当前部分解的基础上扩大该部分解。扩大时,首先...
分类:
其他好文 时间:
2015-07-20 19:37:40
阅读次数:
131
什么是子集和数问题?问题分析,简单的说就是有n 个数在这N个数中选取若干个数使得这几个数的和为M。解决问题的途径;使用回溯法。最后形成二叉树左边是有这个数,右儿子是没有这个数。使用回溯法,一个一个的进行计算,时间太长。使用一定的条件,使得时间减短。前提是对所有的数字进行非降序排序,然后在进行下面的操...
分类:
编程语言 时间:
2015-07-12 22:54:57
阅读次数:
516
(写这篇文章主要是明天就要考试了,算法考试,今天不想再复习了,xiang着今天也开通了博客,于是在这个平台上进行复习,应该会更高效。最后祝愿我明天考个好成绩。嘻嘻。。。)n皇后问题,主要是应用到回溯法。首先选取一条路径进行计算,如果不满足条件则,进行回溯,选择另外的路径进行计算。我觉得回溯法:就想是...
分类:
编程语言 时间:
2015-07-12 21:41:56
阅读次数:
148