IDA*
aozil_yang
这个作者很懒,什么都没留下…
展开
-
UVA UVA - 1374 Power Calculus 快速幂计算(迭代加深搜索)
大体题意: 给你一个数n,计算如何从x 经过乘法除法快速计算到 x^n。 输出最短长度! 思路: 直接迭代加深最短长度! 在dfs中,有两个参数cur 和 s 分别代表当前层数和当前的指数! 只有当cur == 深度 并且 s 等于 n时 成立! 当cur大于深度 剪枝! 或者s × 2 ^ (maxd-cur) 说一下这里,maxd - cur 是剩余的步骤数,s为当前的数原创 2016-05-12 22:40:00 · 653 阅读 · 0 评论 -
例题7-12 UVA - 1343 The Rotation Game 旋转游戏(IDA*)
题目大意: 给一个棋盘,问最少进行几次旋转使得中间的数字全部相等!(并且字典序最小!) 思路: 借鉴了代码仓库,感觉写的很巧妙,简单记录一下! 大致思路: 用line [][] 二维数组给棋盘进行标号! a[] 一维数组代表当前的棋盘中棋子的标号! center[] 一维数组代表棋盘中间棋子的标号! rev[]数组进行反转列 ,减少了很多代码! 先判断是否合法,合法的话直接输出。原创 2016-05-04 00:22:32 · 489 阅读 · 0 评论 -
习题7-7 Egyptian Fractions (HARD version) 埃及分数 (IDA*)
大体题意: 在普通的埃及分数上加了 几个限制, 多给了你K个数,让你求出最后的埃及分数结果中分母不能是K个数的某个数的结果。 思路: 先记录一下 埃及分数算法: 利用了迭代加深的搜索方式 最后的分母结果记录在ans数组中,最后只需要输出ans 数组即可! 首先将ans数组初始化为-1,表示没赋过值,这样在更新答案时,可以判断ans[i] == 1或者 v[i] 在dfs 函数中原创 2016-05-29 17:51:33 · 460 阅读 · 0 评论 -
例题7-10 UVA 11212 Editing a Book (IDA*搜索)
大体题意: 给你一个n 个数全排列数组,要求你可以选择一个连续的序列 随便插到一个位置,求最少几步 能到达严格上升的序列? 思路: 正解是IDA*搜索。 一开始简单的以为是BFS ,一想 他还是一个 全排列的数组 用康托展开不正好可以完美哈希么,就写了个bfs 加了一些剪枝 ,9个数的数据跑的非常慢。 应该用dfs。 根据刘汝佳的分析,有几个地方分析的非常巧妙。 我们可以利用后继不原创 2017-02-09 15:13:40 · 366 阅读 · 0 评论