13-整数划分

整数的划分
相关问题:
有一个桶放了n升水 给了若干个桶 每个桶的容量是n升,每次可以往桶里倒一升或者两升或者整数升 问有多少种倒水的方法?
在这里插入图片描述n是被划分的整数 m是它的加数 它的加数不会超过n
即n=6 而m=8是没有意义的 这个时候m相当于是6 最多就只有六个数相加得到6
对于q(6,6)=1+q(6,5)即除过了6那个式子 然后后面都加上
在这里插入图片描述对于第四个的证明:
在这里插入图片描述代码实现:

int fun(int n, int m)
{
        if (n < 1 || m < 1) return 0;//都等于0的时候没有划分
        if (n == 1 || m == 1)
        {
               return 1;
        }
        if (m > n)
        {
               return fun(n, n);
        }
        if (n == m)
        {
               return 1 + fun(n, n - 1);
        }
        else
               return fun(n - m, m) + fun(n, m - 1);
}
int main()
{
        cout << fun(6, 9) << endl;
        cout << fun(6, 4) << endl;
        cout << fun(6, 6) << endl;
        cout << fun(6, 1) << endl;
        return 0;
}

结果:(6, 9)和(6, 6)就是一样的划分结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值