暴力
文章平均质量分 79
CCCmaster
这个作者很懒,什么都没留下…
展开
-
埃及分数问题(剪枝+迭代加深搜索)=>算法竞赛入门经典(第二版)第七章
题意:给你个真分数,你需要将其化简为最少的若干特殊真分数之和,你要输出这个序列(序列按递增序)。如果有不同的方案,则分数个数相同的情况下使最大的分母最小。若还相同,则使次大的分母最大……以此类推。如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好原创 2016-06-27 19:44:46 · 838 阅读 · 0 评论 -
uva1601(The morning after Helloween)解题报告
最先考虑到的当然是BFS,想当然地认为只要一个一个地BFS就可以了。就像是迷宫类的题目,一步一步找,最终找到了某一个状态就可以了,只不过人数多了点的走迷宫而已。但是如果这么做的话必然会超时,因为在每一个状态可以走的路太多,三个鬼,每个有5个方向可以走,三个加起来除去原地不动还有124种走法,而且算出来的最少步数也不一定少,第三组样例的步数就多达77步,空间有没有那么多就暂且不说了,时间会超,在uv原创 2016-06-26 14:01:14 · 721 阅读 · 0 评论 -
uva11212(Editing a Book/编辑书稿)=>IDA*算法/经典的估价函数
题意:将一个数字序列以最少的剪切次数粘贴成另一个数字序列。 解析:本题可用IDA*,也就是设计了估价函数的迭代加深搜索。 IDA*大体上指的是,首先将初始状态结点的H值设为阈值maxH,然后进行深度优先搜索,搜索过程中忽略所有H值大于maxH的结点;如果没有找到解,则加大阈值maxH,再重复上述搜索,直到找到一个解。其中IDA*的减枝策略,每遍历一个深度的时候,进行判断: 当前局面的估价函数原创 2016-06-29 19:40:23 · 1057 阅读 · 0 评论 -
uva12325(Zombie's Treasure Chest/宝箱)=>多种方式枚举
题意大概:你有一个体积为N的箱子和两种数量无限的宝物。宝物1的体积为s1,价值为v1,宝物2的体积为s2,价值为v2.输入均为32位带符号整数。你的任务是计算最多能装多大价值的宝物。例如n=100,s1=v1=34,s2=5,v2=3,那么答案就为86,方法是装2个宝物1,装6个宝物2,。每种宝物都必须是拿非负整数个。 最容易想到的是枚举法。枚举宝物1的个数,然后多拿宝物2.这样做的时间复杂原创 2016-07-01 19:21:53 · 572 阅读 · 0 评论 -
uva1343(The Rotation Game)=>IDA*
因为8个转轮对应的位置比较没有规律,需要提前将这些位置存在数组中,方便旋转操作和回溯法的归位操作。 利用数组来人为储存没有规律的数字。可以使用IDA*的算法。 IDA*合了bfs步数最少和dfs字典序最小的优点。 本题的移动比较复杂,因此应当事先保存A,B,C,D四个方向的位置,后四个方向可以反推出来。同时还要保存要观察的8个格子的位置。接下来,先判断是否就是目标状态,如果不是,进行原创 2016-07-01 19:43:56 · 591 阅读 · 0 评论