Pku acm 1579 Function Run Fun
2010-04-21 17:21
302 查看
http://acm.pku.edu.cn/JudgeOnline/problem?id=1579
Consider a three-parameter recursive function w(a, b, c):
if a <= 0 or b <= 0 or c <= 0, then w(a, b, c) returns: 1
if a > 20 or b > 20 or c > 20, then w(a, b, c) returns: w(20, 20, 20)
if a < b and b < c, then w(a, b, c) returns: w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c)
otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1)
这本身就是一个递归函数,要是按照函数本身写递归式,结果肯定是TLE,这里我开了一个三维数组,从w(0,0,0)开始递推,逐步产生到w(20,20,20)的值,复杂度O(n^3).
总结:这道题是很地道的DP,因为它的子问题实在是太多了,所以将问题的结果保存起来,刘汝佳《算法艺术和信息学竞赛》中115页讲到自底向上的递推,这个例子就非常典型。总体来说这个题目还是非常简单的,不过这个思想是地道的动态规划。
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得
Consider a three-parameter recursive function w(a, b, c):
if a <= 0 or b <= 0 or c <= 0, then w(a, b, c) returns: 1
if a > 20 or b > 20 or c > 20, then w(a, b, c) returns: w(20, 20, 20)
if a < b and b < c, then w(a, b, c) returns: w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c)
otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1)
这本身就是一个递归函数,要是按照函数本身写递归式,结果肯定是TLE,这里我开了一个三维数组,从w(0,0,0)开始递推,逐步产生到w(20,20,20)的值,复杂度O(n^3).
总结:这道题是很地道的DP,因为它的子问题实在是太多了,所以将问题的结果保存起来,刘汝佳《算法艺术和信息学竞赛》中115页讲到自底向上的递推,这个例子就非常典型。总体来说这个题目还是非常简单的,不过这个思想是地道的动态规划。
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得
相关文章推荐
- Pku 1579 Function Run Fun
- PKUOJ1579 Function Run Fun
- poj 1579 Function Run Fun
- poj 1579 Function Run Fun
- poj 1579 Function Run Fun
- POJ1579 HDOJ1579 Function Run Fun
- poj 1579 Function Run Fun
- poj1579 Function Run Fun
- poj 1579 Function Run Fun
- POJ-1579 Function Run Fun
- poj 1579 Function Run Fun
- poj 1579 Function Run Fun
- POJ- 1579 Function Run Fun
- POJ 1579 Function Run Fun
- Function Run Fun poj1579
- POJ 1579 Function Run Fun
- poj 1579 Function Run Fun
- POJ 1579 Function Run Fun
- 1579 Function Run Fun
- ACM 记忆化搜索 Function Run Fun & FatMouse and Cheese