动态规划 自然数拆分
Posted 亮星的信息学小屋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划 自然数拆分相关的知识,希望对你有一定的参考价值。
继续动态规划
任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。输入n,输出最终的拆分方法数。
假设每种拆分方案中,最小的数为w,则按照w的不同,我们可以把拆分方案分成2类:
第一类:
w=1,我们把1除去,则剩余部分正好是数字n-1拆分成k-1部分,一共有dp[i-1][k-1]个;
第二类:
w>1,则所有的数都>1,我们把所有的数-1,则正好减掉了k个数,情况变成了数字n-k拆分成k部分,一共有dp[n-k][k]个。
根据加法原理,得出DP方程。
DP方程:
dp[n][k]=dp[n-1][k-1]+dp[n-k][k]
#include<bits/stdc++.h>
int sum,n,dp[1001][1001];
for(int i=1;i<=n;i++) dp[i][1]=1;
dp[i][j]=dp[i-1][j-1]+dp[i-j][j];
本文合肥一六八中学校园图片
来自老爸学校的张尚镯伯伯
在此表示感谢
觉得有用,请点右下方“在看”,谢谢鼓励
以上是关于动态规划 自然数拆分的主要内容,如果未能解决你的问题,请参考以下文章
动态规划完全背包问题《自然数的拆分》
算法导论之动态规划 字符串拆分问题
整数拆分(动态规划)
LeetCode-动态规划单词拆分
[LeetCode] 139. 单词拆分 ☆☆☆(动态规划 回溯)
动态规划3--分割整数