随笔分类 - DFS+回溯
USACO 2.1.6 Healthy Holsteins 枚举组合数
摘要:描述农民JOHN以拥有世界上最健康的奶牛为傲。他知道每种饲料中所包含的牛所需的最低的维他命量是多少。请你帮助农夫喂养他的牛,以保持它们的健康,使喂给牛的饲料的种数最少。给出牛所需的最低的维他命量,输出喂给牛需要哪些种类的饲料,且所需的饲料剂量最少。维他命量以整数表示,每种饲料最多只能对牛使用一次,数据保证存在解。格式PROGRAM NAME: holsteinINPUT FORMAT:(file holstein.in)第1行:一个整数V(1<=V<=25),表示需要的维他命的种类数。第2行:V个整数(1<=每个数<=1000),表示牛每天需要的每种维他命的最小量。第3
阅读全文
1.4.5 Mother's Milk DFS 深度搜索
摘要:题目地址 : http://ace.delos.com/usacoprob2?S=milk3&a=noSD7NtGmGx这道题目,其实很简单,但是一开始并没有找到解题思路,因为“误入歧途”。总是试图去用纯数学的方法去解决,换句话说就是去试图找出该问题的规律。但这道题目是被放在USACO简单搜索那一章的,后来无奈用搜索的思路想了一下,茅塞顿开。像这种最单纯的搜索题目,关键问题是,设计搜索过程中的状态表示,然后建立状态跳转的递归关系,最后再分析递归终止条件。比如该题目,由于三个桶的总量是不变的,所以(a,b)表示一个中间状态,表示当前第一个桶和第二个桶的牛奶量,那么 c = mc - a
阅读全文
1.4.3-The clocks 搜索
摘要:http://ace.delos.com/usacoprob2?S=clocks&a=3hMw0XdJ4KO枚举暴力搜索法虽然为暴利搜索,不过结合题目的特点还是需要注意一些技巧的,注意该题目的特点:1每种变换方法可以使用0~3次,因为如果使用4的话,正好转一圈,和0等效。2并且每种变换方法在前与在后是等效的。所以根据题目输出要求,最小字典序。该法枚举每条路径,枚举的顺序很重要,因为找到最小的就停止搜索了,所以控制好枚举顺序有些技巧。根据排列组合基础可以知道,该问题的每种path路径为 1,2,3,4,5,6,7,8,9,11,12,13,。。。。998,999,1112,1113,11
阅读全文
POJ1753棋盘翻转 枚举+DFS
摘要:练习枚举方法,网上推荐做POJ1753,感觉似曾相识,不管,就做了,后来才发现,这道题目,过去做过,不过过去用的是DFS方法,其实两种方法都不错,都属于基本算法,而且模拟操作也适合基础练习。模拟的话应该应该建立两个矩阵initMap[][],ope[][], (因为每次枚举都要初始化棋盘所以,每次拷贝棋盘到map[][]上,在map[][]上进行操作修改。)假设map[i][j]=1则为黑色,map[i][j]=0为白色每次枚举ope[][]矩阵的第一行ope[1][j],共有16中情况{0,0,0,0},{0,0,01}.....{1,1,1,1}可以发现一个规律,如果从上到下,从左到右填写
阅读全文
记忆化搜索(附例题HDOJ 1501 )
摘要:记忆化搜索又称备忘录方法,是动态规划算法的变形。记忆化搜索编写形式就是直接递归形式,自顶向下,但是加上了标记放置重复搜索、而动态规划是通过打表的形式,自底向上比如过去写的一篇日志《矩阵连乘问题》http://www.cnblogs.com/liushang0419/archive/2011/04/27/2030970.html如果用递归形式实现的话,代码如下:但是仔细思考可以发现,直接用递归实现的话 1 int recurMatrixChain(int i,int j){ 2 if(i==j)return 0; 3 int u = recurMatrixChain(i,i)+recurMatr
阅读全文
浙公网安备 33010602011771号