算法提高 数的划分

算法提高 数的划分(动态规划)


问题描述
一个正整数可以划分为多个正整数的和,比如n=3时:
  3;1+2;1+1+1;
  共有三种划分方法。
  给出一个正整数,问有多少种划分方法。
输入格式
一个正整数n
输出格式
一个正整数,表示划分方案数
样例输入
3
样例输出
3
思路:
本题的意思就是用数的和组成一个n问有多少种可以,我们可以把他当作背包题,当n为这么多的时候有多少种装法,反之我们就知道1-n就是我们可以取的值范围。下面的i表示我当前可以取的数,j表示当时n为多少。我们知道当取的数比j大时我们就保持原来的次数,当i小于等于时,我们就可以取他的数那么转移方程就得本身数+dp[j-i],dp[j]+=dp[j-i]。因为我们可以取一样的数,所以我们就没有必要取原来的次数,所以我们让for循环的j我正推就行了。
程序:

z=int(input())
dp=[0 for i in range(z+1)]
dp[0]=1
for i in  range(1,z+1):  #我当时去的数
    for j in range(i,z+1):  #当前的值
            dp[j]+=dp[j-i]   
print(dp[z])

禁止转载。仅用于自己学习。对程序错误不负责。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目 总时间限制: 100ms 内存限制: 65536kB 描述 将正整数n 表示成一系列正整数之和,n=n1+n...
    恰似一碗咸鱼粥阅读 336评论 0 0
  • 试题 算法提高 能量项链(动态规划) 问题描述在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有...
    Elegy_G阅读 471评论 0 0
  • 算法课第五次作业BJTU计算思维与算法实训平台 A.合唱队形 题目描述N位同学站成一排,音乐老师要请其中的(N-K...
    n8g阅读 124评论 0 0
  • 算法训练 数的划分(动态规划) 问题描述将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n...
    Elegy_G阅读 502评论 0 0
  • 做算法题的方法: 充分阅读题目.了解题目背后的关键意思; 分析题目,涉及到哪些数据结构,对问题进行分类. 到底属于...
    暱稱已被使用阅读 467评论 0 0