整数分划问题和钱的组合问题(动态规划)

本文介绍了整数分划问题和钱的组合问题,这两个问题都可以通过动态规划来解决。在整数分划问题中,探讨了如何计算整数n的不同分划数目,定义了函数Q(n,m),并通过递归关系建立了解决方案。而在钱的组合问题上,利用类似的方法,考虑了不同面值纸币的组合数,同样定义了函数Q(n,m),并给出了递归公式和实现代码。" 134721513,19720858,Java开发的停车场智能管理系统,"['java', 'mysql', 'mybatis', 'web开发', '智能管理']

1、整数分划问题

问题描述:
对于一个正整数n的分划,就是把n表示成一系列正整数之和的表达式。需要注意的是,分划与顺序无关,例如6=5+1和6=1+5被认为是同一种分划。另外,这个整数n本身也算是一种分划。

这里写图片描述

思路:
(1)从上面n=6的例子中可以看出,很难发现大问题P(n)和小问题P(n-d) (d=1,2,3,…)之间的关系。因此在解决本问题之前,先看另外一个问题:用递归法计算从n个人中选择k个人组成一个委员会的不同组合数。这个问题并不难,高三的排列组合问题。

(2)由分析可知:由n个人里选k个人的组合数=由n-1个人里选k个人的组合数+由n-1个人选择k-1个人的组合数。这也是比较常见的排列组合公式。

这里写图片描述

代码:

int comm(int n, int k){  
    if (k > n)  
        return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值