码迷,mamicode.com
首页 >  
搜索关键字:迭代加深    ( 135个结果
【日常学习】【迭代加深搜索+哈希】codevs1004 四子连棋题解
迭代加深搜索的实现以及哈希表在ID中应用应当注意的问题...
分类:其他好文   时间:2015-08-25 16:45:26    阅读次数:935
Codevs1225 八数码难题
题目大意:在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。 思路:使用IDA*算法。估价函数为现在棋盘与目标棋盘的对应元素不同的个数。剪枝:若当前深度加上...
分类:其他好文   时间:2015-08-20 19:03:46    阅读次数:159
【日常学习】【IDA*】codevs2449 骑士精神题解
题目描述 Description      在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。         给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘:                           为了体...
分类:其他好文   时间:2015-08-18 19:22:04    阅读次数:257
POJ - 2286 - The Rotation Game (IDA*)
IDA*算法,即迭代加深的A*算法,实际上就是迭代加深+DFS+估价函数题目传送:The Rotation GameAC代码:#include #include #include #include #include #include #include #include #inclu...
分类:其他好文   时间:2015-08-15 00:14:54    阅读次数:162
1374 - Power Calculus (迭代加深+剪枝)
题目要求乘除法的最少次数,其实就是一个数组中一开始只有一个数:1 ,每次可以从数组中取两个数(可以取同一个数)相加生成一个新数加如数组 。 那么显然这是一个迭代加深搜索,从小到大枚举深度上限 。 为了降低时间复杂度,我们要尽量的减少迭代次数,所以我们优先做加法,并且优先将最大的两个数相加,这样可以最快的接近目标 。 当然,有一个很显然的剪枝: 当每次取最大的两个数相加仍然小于n时要剪枝 。因...
分类:其他好文   时间:2015-08-10 22:23:41    阅读次数:117
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 22:09:13    阅读次数:182
“埃及分数”问题浅谈对迭代加深搜索的理解
迭代加深搜索(IDDFS)的思想 迭代加深搜索一般用来求解状态树“非常深”,甚至深度可能趋于无穷,但是“目标状态浅”的问题。如果用普通的DFS去求解,往往效率不够高。此时我们可以对DFS进行一些改进。最直观的一种办法是增加一个搜索的最大深度maxd,一般是从1开始。每次搜索都要在maxd深度之内进行,如果没有找到解,就继续增大maxd,直到成功找到解,然后break。 如下图所示,如果...
分类:其他好文   时间:2015-08-09 17:07:36    阅读次数:172
hdu-4127 Flood-it!(IDA*算法)
今天做的福州赛区区域赛的题目重现,一整场都在抠这道题仍然无法AC,时间卡的很紧,不过其实也是自己的搜索学的实在太差,紫书上刷的最少的就是第七章的题 。 我一开始就看出了这道题需要IDA*算法,但是昨天才看的还没能深入理解,通过赛后补这道题,感觉整体思路有了一个新的突破 。 IDA*算法就是迭代加深搜索和A*算法的结合,迭代加深搜索非常简单,就是从小到大枚举深度上限,适合求解深度未知的或者像该题...
分类:编程语言   时间:2015-08-08 09:11:28    阅读次数:117
11212 - Editing a Book(IDA*算法)
又一道迭代加深搜索,从小到大枚举上限 。   关键的剪枝部分是写出启发函数,这个比较难。。 不过每次剪切后,不正确的数字个数最多减三还是很好理解的,因为我们算不正确数字个数的方法是看当前数字+1是不是等于下一个数字 。 所以每次剪切最多只有3个数字的后继数字发生了改变。  那么 剪枝条件就显而易见了 。 代码如下: #include using namespace std; const in...
分类:编程语言   时间:2015-08-05 10:31:49    阅读次数:156
11214 - Guarding the Chessboard(暴力搜索)
IDA*算法, 从小到大枚举深度上限,不过该题是有深度上限的,题目中的第一个样例表明:最多需要5个皇后就可以覆盖整个棋盘 。  利用紫书上的技巧,我们可以快速的判断任意两个棋子是不是在同一行、同一列、同一对角线 (详情见紫书P193那两个图)。  这样之后暴力搜索就可以了 。 每一层需要O(nm)的复杂度,但是实际上并不需要那么大的复杂度 。和八皇后问题类似 , 当前行之前的行已经放置了皇后,...
分类:其他好文   时间:2015-08-05 08:57:48    阅读次数:194
135条   上一页 1 ... 8 9 10 11 12 ... 14 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!