[算法]正整数划分

Posted tailiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[算法]正整数划分相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <cmath>

using namespace std;
//正整数划分
//最主要根据题目意思写出递归式
//未输出划分的具体过程
/*
6;
5+1;
4+2,4+1+1;
3+3,3+2+1,3+1+1+1;
2+2+2,2+2+1+1,2+1+1+1+1;
1+1+1+1+1+1
*/
static int q(int n, int m)
{
    if (n < 1 || m < 1)
    {
        return 0;
    }

    if (n==1 || m==1)
    {
        return 1;
    }

    if (n<m)
    {
        return q(n, n);
    }

    if (n==m)
    {
        return 1 + q(n, n - 1);
    }
    //n>m>1:
    return q(n, m - 1) + q(n - m, m);
}

int main()
{
    cout<<q(6, 6)<<endl;//11

    cout << "hello world" << endl;
    return 0;
}

技术图片

以上是关于[算法]正整数划分的主要内容,如果未能解决你的问题,请参考以下文章

递归法----整数划分问题

学习小结

将正整数n划分成一系列正整数之和,求正整数的不同划分个数

整数拆分

NYOJ 90 —— 求n划分为若干个正整数的划分个数

将正整数n表示成k个正整数的和(不计各数次序),称为正整数n分为k部分的一个划分,两个划分中,如果各加