poj 1664 放苹果

一道比较水的题,数据范围很小,打表能过,不过其中的递归思想很不错,很有dp的感觉
int dfs(int m, int n)
{
    
if ( m == 0 || n == 1 )
        
return 1;
    
if ( m < n )
        
return dfs(m, m);
    
return dfs(m, n-1)+dfs(m-n, n);
}
这不就是dp了么?边界条件+处理当前状况

#include <stdio.h>

int dfs(int m, int n)
{
    
if ( m == 0 || n == 1 )
        
return 1;
    
if ( m < n )
        
return dfs(m, m);
    
return dfs(m, n-1)+dfs(m-n, n);
}

int main()
{
    
int ncase, m, n;
    scanf(
"%d"&ncase);
    
while ( ncase-- )
    {
        scanf(
"%d%d"&m, &n);
        printf(
"%d\n", dfs(m, n));
    }
    
return 0;
}

posted on 2011-09-06 17:46 purplest 阅读(263) 评论(0)  编辑 收藏 引用 所属分类: DP


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


<2011年9月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

常用链接

留言簿

随笔分类(70)

随笔档案(68)

ACMer

搜索

最新随笔

最新评论