我是靠谱客的博主 拉长乌冬面,最近开发中收集的这篇文章主要介绍将一个正整数n表示成一系列的正整数之和,求共有几种划分方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

题目:将一个正整数n表示成一系列的正整数之和:求共有几种划分方法

n=n1+n2+n3+.....+nk   (n1>=n2>=n3.......>=1, k>=1)

被称作正整数的一个划分。正整数n可能存在不同的划分,例如正整数6的全部划分为

6=6

6=5+1

6=4+2     6=4+1+1

6=3+3       6=3+2+1       6=3+1+1+1

6=2+2+2   6=2+2+1+1   6=2+1+1+1+1

6=1+1+1+1+1+1

方法:找递推公式:

#include <iostream>
using std::cout;
using std::endl;
using std::cin;

int partition(int abc, int max)//max表示划分的正整数中最大的正整数
{
    if(abc==1 || max==1)
    {
        return 1;
    }
    if(abc<max)
        return partition(abc, abc);
    if(abc==max)
        return partition(abc, abc-1)+1;
    if(abc>max)
        return partition(abc, max-1)+partition(abc-max, max);//由两部分组成:一部分由max-1表示;另一部分由max表示,可转化成abc-max的表示种类
}

int main()
{
    int abc;
    while(cin>>abc)
        cout<<partition(abc,abc)<<endl;
}

 

最后

以上就是拉长乌冬面为你收集整理的将一个正整数n表示成一系列的正整数之和,求共有几种划分方法的全部内容,希望文章能够帮你解决将一个正整数n表示成一系列的正整数之和,求共有几种划分方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部