A Za, A Za, Fighting...

坚信:勤能补拙

PKU 1579 Function Run Fun

问题:
http://acm.pku.edu.cn/JudgeOnline/problem?id=1579

思路:
根据题意的描述,采用递归是显然易见的
不过,该题的另一个突出的特点是重复子问题,如何既可以获得递归的简洁,又同时可以避免重复子问题的多次计算呢?
这时,就可以采用备忘录方法

 1 #define MAX 21
 2 long table[MAX][MAX][MAX];
 3 
 4 long 
 5 function_run_fun(int a, int b, int c)
 6 {
 7     if(a<=0 || b<=0 || c<=0)
 8         return 1;
 9     if(a>20 || b>20 || c>20
10         return (table[20][20][20= function_run_fun(202020));
11 
12     if(table[a][b][c] != 0//memory search
13         return table[a][b][c];
14 
15     else if(a<&& b<c)
16         table[a][b][c] = function_run_fun(a, b, c-1+ function_run_fun(a, b-1, c-1- function_run_fun(a, b-1, c);
17     else
18         table[a][b][c] = function_run_fun(a-1, b, c) + function_run_fun(a-1, b-1, c) + function_run_fun(a-1, b, c-1- function_run_fun(a-1, b-1, c-1);
19     return table[a][b][c];
20 }

posted on 2010-06-29 22:52 simplyzhao 阅读(192) 评论(0)  编辑 收藏 引用 所属分类: C_动态规划


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜