摘要: 来源:http://ace.delos.com/usacoprob2?a=pazq26JBLUl&S=money简单的背包问题把题目再描述一遍:给出V种货币面值,和需要构造的金额数N,问有多少种构造方法。1.这里涉及货币的种类和金额数两个量,所以状态的表示要有这两个量;2.设F[i][j]表示用前i种货币构造金额为j的构造方法数,则: F[i][j]=F[i-1][j]+F[i][j-w[i]]即用与不用货币i的问题初始化:F[k][w[k]]=1,这个初始化可以放在循环外边,不过这样就要在循环内把这个加一次;也可以放在循环内部。当然,空间上还可以再优化,具体可以参照DD大牛的《背包九 阅读全文
posted @ 2012-11-17 10:34 ay27 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 来源:http://ace.delos.com/usacoprob2?a=UGksUWcO9ZG&S=zerosum 简单的DFS,秒杀。 主要是不清楚C++中是否有函数可以直接计算表达式,所以自己写了个简单的计算函数。 搜索时按照空格,加号,减号的顺序,连排序都省了。 /*ID:ay27272PROG:zerosumLANG:C++*/#include <iostream>#inc... 阅读全文
posted @ 2012-11-17 00:34 ay27 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 来源:http://ace.delos.com/usacoprob2?a=T9Gq2i9yzJN&S=nocows 题目要求的是,用N个结点能够构造多少个高为K的二叉树,要求二叉树的结点的度为0或2。 首先,我们要关注的是树的高度和结点数。再者,这题的所有结点的度都为0或2。 考虑到结点度的特殊性,如果把高为K的树的根结点删去,则生成两个高为K-1的子树T1和T2,它们的结点数和为N-1 ... 阅读全文
posted @ 2012-11-17 00:32 ay27 阅读(158) 评论(0) 推荐(0) 编辑