摘要:
题目链接;http://poj.org/problem?id=2248 要求给出一个严格递增的数列,首元素是1,尾元素是n,并且要求最短。 可以得知,在一百以内的最优策略中,搜索的深度不会超过10,深度最坏的情况下是有100层的,而且深处数的分支会越来越多,考虑到层数最多是10层,所以我们可以考虑使 阅读全文
摘要:
题目链接:http://poj.org/problem?id=1190 剪枝的常用思考策略:优化搜索顺序(从决策数量越少的位置开始决策)、排除冗余的等效的操作、可行性剪枝、最优性剪枝、上下界剪枝,其中在可行性剪枝方面可以利用“未来期望进行剪枝” 要充分利用不等式关系进行放缩,将不可能的状态进行剪枝, 阅读全文
摘要:
题目链接;http://poj.org/problem?id=1011 又是拼木棍呀,不过这次我是对他的剪枝原理完全弄清楚了,最后两条剪枝还真的是很难想到的。这次的剪枝中加入了一条:我们在某一跟木棍中拼接时,选择的木棍长度是递减的,这样就保证了搜索树中不会有重叠的部分,不过其实在木棍中,小木棒是无序 阅读全文
摘要:
题目链接:http://poj.org/problem?id=3074 本题的重点在于利用二进制位高效地判断一个位置能填哪些数,行、列、九宫格中能填的数的用一个二进制数表示,相与便是能填的数的二进制表示,使用lowbit函数可以 依次取出最低有效位进行搜索。基于几个常识:我们做数独的时候一定每次都是 阅读全文
摘要:
题目链接:https://www.acwing.com/problem/content/167/ 首先看到这个数据范围就知道需要用搜索来实现,保存的当前状态是一共用了多少缆车,当前扫描的小猫编号 ,每个缆车中的重量。其中第三个状态是可以用全局数组来维护的, 前面两个状态作为dfs的参数传入,每次可以 阅读全文