递推例子

本文针对PKUACM 3088问题,使用动态规划方法求解特定组合数量。定义dp[i][p]表示有i个数字且必须使用p种不同类型的组合数。通过递归公式dp[i][1]=i和dp[i][p]=C[i][p]*dp[p][p]进行计算,并特别解释了dp[i][i]的情况。

题目是pku acm 3088

http://acm.pku.edu.cn/JudgeOnline/problem?id=3088

要求出组合的数量。 令dp[i][p]为有i个数字,而必须用p个的种类。

   则dp[i][1] = i;  (j==1)

  dp[i][p] = C[i][p] * dp[p][p];   (p>1 p<i)    C表示排列组合的取法,也用递推一次写好

dp[i][i] 可以理解成两种情况之和 1: 一次全按 2: 两种组合的相加A+B,并且A,B都非空,也就是说A,B 都属于

dp[i][p],p<i. 又因为dp[i]i]可以有AB也可以交换顺序成BA,就是两种可能性而 dp[i][p],p<i有A和B也是两种可能性。

所以dp[i][i]等于dp[i][1]+dp[i][2]+....+dp[i][i-1] +1 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值