
回溯法
文章平均质量分 73
庞老板
思考时啃啃手指头会更有灵感
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
NYOJ 58 最少步数
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,1,0,1,0,0,1原创 2012-07-08 20:17:38 · 3073 阅读 · 0 评论 -
回溯法+奇偶剪枝——Hdu 1010 Tempter of the Bone
1) 题目 Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 47967 Accepted Submission(s): 12905 Problem Descriptio原创 2013-04-23 14:14:07 · 1996 阅读 · 6 评论 -
第5章 回溯法,n皇后问题
#include #include using namespace std; #define MAXN 10 int n; //皇后数,棋盘大小 int q[MAXN]; //放置的皇后的位置,q[i]表示:第i个皇后的位置在第i行,第q[i]列 int count; //可行方案数 bool IsPlaceable(int x, int y) { int i; for (i原创 2013-04-23 16:54:22 · 1282 阅读 · 0 评论 -
第5章 回溯法,0-1背包问题
#include #include #include using namespace std; #define MAXN 10 struct Goods_Info { int v; //价值 int w; //重量 double vw; //价值重量比 }goods[MAXN]; int n; int maxValue; bool solu[MAXN]; bool opti原创 2013-04-24 13:05:40 · 2045 阅读 · 0 评论 -
第5章 回溯法,装载问题
#include #include #include using namespace std; #define MAX 100 int c1, c2; //两船的载重量 int n; //货物数量 int w[MAX]; //货物重量 int maxw; //最大装载量 bool finished; //已达到装载最大量时,finished为true void Backtr原创 2013-04-14 19:22:03 · 2085 阅读 · 0 评论 -
第5章 回溯法,批处理作业调度
#include #include using namespace std; #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define MAXSIZE 10 #define INF 999999999 struct Job_Info { int t1, t2; }job[MAXSIZE]; int n; //作业数量 int solu原创 2013-04-16 14:32:30 · 1407 阅读 · 0 评论 -
第5章 回溯法,符号三角形问题
#include #include using namespace std; #define MAXSIZE 21 int n; //第一行符号个数 int signTriangle[MAXSIZE][MAXSIZE]; //符号三角形矩阵,矩阵最左侧一列不用 int count; //满足条件的符号三角形个数 int half; //符号总数的一半原创 2013-04-16 16:09:38 · 1997 阅读 · 0 评论 -
搜索——Hdu_1016_Prime Ring Problem
2012/7/24 16:17 Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 13393 Accepted Submission(s): 6064 Problem原创 2012-07-24 16:51:47 · 1069 阅读 · 0 评论 -
搜索——Ny 90 整数划分
1) 题目 整数划分 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1。 正整数n的这种表示称为正整数n的划分。求正整数n的不 同划分个数。 例如正整数6有如下11种不同的划分: 6; 5+1; 4+2,4+1+1; 3+3,原创 2013-04-21 18:29:56 · 1542 阅读 · 0 评论 -
回溯法——Ural 1073 Square Country
1073. Square Country Time Limit: 1.0 second Memory Limit: 16 MB There live square people in a square country. Everything in this country is square also. Thus, the Square Parliament has pass原创 2013-03-24 11:27:01 · 1523 阅读 · 0 评论 -
搜索算法的感悟——解空间
练习了将近一个月的搜索算法了,也有了一些小小的感悟。 搜索算法的两个关键问题: (1):如何找到整个解空间。 (2):如何剪枝。 我的感悟是关于解空间的。问题的解往往需要经过一系列操作之后才能得到,而在这一系列的操作中,每一步的操作都会得到一个状态,当最终这个状态与目标状态相同时,此时也就是得到了结果,所以在搜索的过程中,着重需要处理的就是操作和状态。只有考虑了所有可能的操作,才会得到所有原创 2012-07-30 19:49:36 · 6565 阅读 · 1 评论 -
BFS——NYOJ 21 三个水杯
三个水杯 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子。三个水杯之间相互倒水,并且水杯没有标识,只能根据给出的水杯体积来计算。现在要求你写出一个程序,使其输出使初始状态到达目标状态的最少次数。 输入第一行一个整数N(0 接下来每组测试数据有两行,第一行给出三原创 2012-07-30 17:32:23 · 6987 阅读 · 5 评论 -
BFS——最小步数 续
上一次用的DFS,这次BFS,直接在地图上扩展结点,如下图所示: 橙黄色代表起点,浅蓝色终点。 #include #include using namespace std; #define ACCESS 0 struct position { int x, y; }start, end; const int direction[4][2] = {-1原创 2012-07-25 13:36:59 · 683 阅读 · 0 评论 -
N皇后
在N*N格的棋盘上放置N个皇后,任何两个皇后不放在同一行或同一列或同一斜线上。 需要注意的是,如图中上面两个矩阵中大于0的那些数据,它们表示此处有几个皇后可以攻击到,如果移走一个皇后,那么她的攻击范围内的危险值减一。 #include #define QUEEN -1 #define SAFETY 0 #define MOVEDANGER -原创 2012-07-08 20:06:21 · 1024 阅读 · 0 评论 -
迷宫中回溯法的剪枝——奇偶剪枝
问题描述 在一个n行m列的迷宫中,每一步只能向上、下、左、右中任意方向走一格,迷宫中有围墙的地方是无法到达的。从起点s开始,能否刚好走t步,到达e。 例如在下面5行5列的迷宫中,能否恰好经过9步,从s走到e。初始位置在s上,#是围墙。 奇偶剪枝 设起点s的坐标为(sx,sy),终点e的坐标为(ex,ey); 对s的一次操作为对sx或sy进行+1或-1; 若经过t次操作后原创 2013-04-23 13:46:58 · 5273 阅读 · 0 评论