
搜索
文章平均质量分 80
Think_Idea
水滴石穿
展开
-
hdu3567 Eight II(IDA*+康托展开)
题目链接:点击打开链接题意描述:经典八数码问题,给定起始状态和目标状态,经过d、l、r、u移动,求解如何移动能使起始状态到达目标状态?1、移动的次数尽可能少2、如果移动次数相同,求解移动序列的最小字典序?解题思路:典型的IDA*题目估值函数:从当前状态移动到目标状态所需的最小步数(我们可以通过曼哈顿距离进行估值),用于剪枝迭代:此处我们不再使深度每次加1,而是在搜索原创 2015-10-28 21:18:18 · 944 阅读 · 0 评论 -
poj2449 Remmarguts' Date(K短路:A*算法)
题目链接:点击打开链接题意描述:给定一张图,求从点s出发到点t的第k短路?解题思路:A*算法首先预处理使用Dijkstra求出从图中任意一点到点t的最短路径,然后使用A*算法求解即可A*算法中g为从出发点s到当前所走过的实际距离,h为从当前点到目标点t的最短距离,每次我们扩展g+h最小的点即可思考:本题我是用剪枝:记录一个maxdis表示第k短路的一个上界,使用原创 2015-10-25 11:39:23 · 468 阅读 · 0 评论 -
hdu1043 Eight(A*/双向BFS/单项BFS打表+康托展开)
题目链接:点击打开链接题意描述:经典八数码问题,给定八数码的初始序列,求经过u、r、l、d四种操作到达1 2 3 4 5 6 7 8 x的状态,打印出操作序列?解题思路:A*/双向BFS/单项BFS打表+康托展开 202msAC方法一:BFS逆向打表+康托展开:从1 2 3 4 5 6 7 8 x逆向扩展,记录哪些状态可以到达,以及到达给状态操作代码:#includ原创 2015-10-11 17:42:22 · 2167 阅读 · 0 评论 -
hihocoder #1041 : 国庆出游(DFS bitset保存子树集合用于指导DFS遍历过程)
题目链接:点击打开链接题意描述:小Hi和小Ho准备国庆期间去A国旅游。A国的城际交通比较有特色:它共有n座城市(编号1-n);城市之间恰好有n-1条公路相连,形成一个树形公路网。小Hi计划从A国首都(1号城市)出发,自驾遍历所有城市,并且经过每一条公路恰好两次——来回各一次——这样公路两旁的景色都不会错过。令小Hi苦恼的是他的小伙伴小Ho希望能以某种特定的顺序游历其中m个城市。例如按3-2原创 2015-10-08 17:40:25 · 1898 阅读 · 2 评论 -
hdu5012 Dice(分治限界法)
题目链接:点击打开链接题意描述:给定一个立方体,有上、下、左、右、前、后,初始时在这6个面上分布1~6之间,每个数出现且仅出现一次,然后给定末状态,问最少能在几步之内通过旋转得到末状态?旋转操作具体见题意解题思路:广搜+剪枝1、首先由于题目要求是求的最少的步数,我们可以考虑使用广搜2、对于按某个方向旋转,最多旋转三次,第四次旋转将回到原点,所以我们可以枚举所有情况:每个方向原创 2015-08-28 13:14:42 · 872 阅读 · 0 评论 -
hdu1010Tempter of the Bone(dfs+奇偶剪枝)
题目链接:点击打开链接题目描述:给定一个迷宫,给一个起点和一个终点,问能否恰好经过T步到达终点?每个格子不能重复走解题思路:dfs+剪枝剪枝1:奇偶剪枝,判断终点和起点的距离与T的奇偶性是否一致,如果不一致,直接剪掉剪枝2:如果从当前到终点的至少需要的步数nt加上已经走过的步数ct大于T,即nt+ct>t剪掉剪枝3:如果迷宫中可以走的格子小于T直接剪掉启发:剪枝的重要性原创 2015-08-17 22:01:03 · 623 阅读 · 0 评论 -
hdu5113 Black And White(dfs+剪枝)
题目链接:点击打开链接题意描述:给一个n*m的棋盘,现在有k种颜色的涂料,每种涂料可以使用ai次。求能否找出一种方案,给所有的格子染色,保证相邻的格子之间颜色不同。如果存在给出任意一种解决方案;否则输出NO解题思路:dfs+剪枝由于题目中棋盘最大为5×5所以可以考虑使用dfs,染色问题有一个结论貌似是:(剩余的格子的数量+1)>= 任意一种涂料的个数,否则染色必然失败。因此我们原创 2015-08-14 11:31:59 · 590 阅读 · 0 评论 -
关于八数码问题中的状态判重的三种解决方法(编码、hash、<set>)
八数码问题搜索有很多高效方法:如A*算法、双向广搜等但在搜索过程中都会遇到同一个问题,那就是判重操作(如果重复就剪枝),如何高效的判重是8数码问题中效率的关键下面关于几种判重方法进行比较:编码、hash、set看到问题初学者最先想到的应该就是用一个vis数组标志一下即可。但是该申请多大的数组呢?一个9维数组(9^9=387420489太大了吧)?如果内存允许这是最高效的办法:O(1)原创 2015-08-11 10:58:28 · 4550 阅读 · 0 评论 -
vijos1308 埃及分数(迭代加深搜索)
题目链接:点击打开链接题目描述:在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。对于一个分数a/b,表示方法有很多种,但是哪种最好呢?首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。如:19/45=1/3 + 1/12 + 1/180原创 2015-08-10 21:32:26 · 860 阅读 · 0 评论 -
hdu5366 The mook jong(动规或记忆化搜索)
题目链接:点击打开链接问题描述ZJiaQ为了强身健体,决定通过木人桩练习武术。ZJiaQ希望把木人桩摆在自家的那个由1*1的地砖铺成的1*n的院子里。由于ZJiaQ是个强迫症,所以他要把一个木人桩正好摆在一个地砖上,由于木人桩手比较长,所以两个木人桩之间地砖必须大于等于两个,现在ZJiaQ想知道在至少摆放一个木人桩的情况下,有多少种摆法。输入描述输入有多组数据,每组数原创 2015-08-08 23:34:36 · 719 阅读 · 0 评论 -
uva140 Bandwidth(排列树+剪枝)
题目描述:给定一张图,问如何顺序排列结点,能使排列中任意有边相连的两个节点之间的距离最大的值最小,如果有两个排列最大值相等,请输出字典序小的分析:排列树+剪枝在构造排列树的同时检查当前已经构成的序列中最大值是否小于最优质,如果大于剪掉即可#include #include #include using namespace std;int g[27][27];原创 2015-07-31 09:03:23 · 770 阅读 · 0 评论 -
hdu1627 Krypton Factor(回溯法)
题目描述:给定A-Z中的前L个字符进行任意组合;对于组合得到的字符串中不含有相邻的重复串的为hard串按字典序求解第n个hard串解题思路:回溯法即可#include #include using namespace std;int n,l;char ans[82];bool check(int len){ int flag=false;原创 2015-07-29 16:17:41 · 1000 阅读 · 0 评论