1 package 背包; 2 3 4 import java.util.ArrayList; 5 import java.util.Collections; 6 import java.util.Comparator; 7 import java.util.HashMap; ...
分类:
其他好文 时间:
2015-06-12 09:48:18
阅读次数:
83
给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?
整个解的空间相当于一个二叉树,左边是0,代表不取这个物品,右边是1,代表取这个物品,然后进行dfs,回溯的时候修改。
注意,这里应该有两个剪枝,我这里只写了一个。
#include
#include
#include
using namespace std;
...
分类:
编程语言 时间:
2015-06-05 00:46:43
阅读次数:
133
回溯法解题时通常包含3个步骤: 1. 针对所给问题,定义问题的解空间; 2. 确定易于搜索的解空间结构; 3. 以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。 对于问题的解空间结构通常以树或图的形式表示,常用的两类典型的解空间树是子集树和排列树。当所给的问题是从n个元素的集合S中找...
分类:
其他好文 时间:
2015-06-04 11:43:34
阅读次数:
222
问题 数独(Sūdoku)是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复。 给定一个 9×9 二维数组 ‘grid[9][9]’ 表示初始的局面,判断试放可求解,并输出最终的局面. 回溯法...
分类:
其他好文 时间:
2015-06-03 23:10:58
阅读次数:
170
回溯法--算法框架(2) 基本框架和组成部分:public abstract class Problem { //判断是否有解向量 boolean flag ; //解向量 Comparable [] x; //解向量的大小 int n; //判断是否为完整解 public abstract boo...
分类:
编程语言 时间:
2015-05-26 21:02:45
阅读次数:
133
回溯法--基本思想 有些问题的解有限但是有很多种可能性,解需要穷尽搜索才能获得,为了减少搜索范围,进行剪枝,避免所有的搜索情况。当遍历到某种情况的时候,满足剪枝条件,则停止遍历此种情况,反之,继续遍历下一个。来自为知笔记(Wiz)
分类:
其他好文 时间:
2015-05-26 20:49:45
阅读次数:
342
回溯法---n-着色问题(3) 以三色问题为例: 对给定无向图着色,相邻点颜色不能相同,限用3种颜色在框架基础上的实现:import java. util.Vector ;public class ThreeColor extends CombineProblem { int[][] graph; ...
分类:
其他好文 时间:
2015-05-26 20:48:59
阅读次数:
118
回溯法---n皇后问题(4) 以八皇后问题为例: 如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。在前面所说的算法框架上解八皇后问题:import java. util.Vector ;publ...
分类:
其他好文 时间:
2015-05-26 20:47:36
阅读次数:
188
回溯法---哈密顿回路(5) 在给定图中任取一点,要求经过图中所有点,最后回到起始点,要求同一个点不允许重复经过 在(2)算法框架基础上:import java. util.Vector ;public class Hamilton extends CombineProblem { int star...
分类:
其他好文 时间:
2015-05-26 20:43:02
阅读次数:
184