搜索-IDA*
文章平均质量分 73
leodestiny
这个作者很懒,什么都没留下…
展开
-
UVA 12558 Egyptian Fractions (HARD version) IDA*
题意:经典的埃及分数问题,即给出一个真分数,求出用个数最少的单位分数来表示这个分数。如果有多种方案,要让每个分数尽量的大,即分母尽量的小。会有K个禁止使用的单位分数思路:我们可以发现,如果用普通的dfs,深度其实是无穷的。如果用bfs的话,广度也是无穷的。 对于上面的特征,我们就要考虑用IDA*算法了,即限制dfs扩展的深度,只要解的深度是有限的,那一定可以在有限的时原创 2014-11-29 16:25:42 · 773 阅读 · 0 评论 -
POJ 3460 Booksort IDA*
题意: 给你一个长度为N(N思路:首先我们可以发现,最多的操作次数为N次,即每次我们只将一个数字放到正确的位置。但是最少的操作次数该如何计算呢? 因为,我们注意到对于不同的序列,其操作的方法没有明显的规律性,这样我们就要用搜索来完成这个问题,同时在前面也提到了操作次数的上界,那IDA*算法就是个很好的选择。 IDA*算法的关键就是设计启发式函数原创 2014-11-29 14:42:24 · 1116 阅读 · 0 评论 -
UVA 10181 15-Puzzle Problem IDA* 剪枝
题意:经典的15数码问题,给出这这15个数码的位置,问能否到达目标状态。如果能,输出对应的走法。思路:这里用IDA*算法来解决这个问题。 同八数码一样,我们定义h函数,为每个数字到目标位置的曼哈顿距离之和。 然后这些写完,交上去就TLE。看来还需要优化。 首先第一个优化,是对无解的判断。这里要用到逆序数的概念。原创 2014-12-10 18:31:41 · 1635 阅读 · 0 评论 -
HDU 2467 Déjà vu IDA*
题意:一个机器内有M个开关,每个开关表示00~ 2n−12^n - 1之间的数字,并且每个每个数字的二进制表达中,有且只有三个1。一个数字Y通过M个开关得到的结果为: Y⊕X1⊕X2⊕...⊕XMY \oplus X_1 \oplus X_2\oplus ...\oplus X_M 现在给出初始的数字S,和目标的数字T,想用最小的开关个数,使S变成T,求出最小的开关数。如果不可能输出,impos原创 2015-03-22 17:44:48 · 1015 阅读 · 0 评论