整数的划分(递归或动态规划)

发布时间 2024-01-13 02:01:09作者: califorium

题目:对一个给定的正整数n进行所有可能的划分方式。整数的划分是将一个正整数写成一个或者几个正整数的和,比如4可以被划分为4,3+1,2+2,2+1+1以及4个1。
分析:整数的划分可以视为前n个自然数的组合。
所以可以定义状态dp(i,j)为前i个数对j的划分,即前i个数对j的组合
那么可以看作为使用i和不使用i来划分的两种情况;

  • 故使用i:已经使用了i来划分j-i则有dp(i,j-i)
  • 不使用i:则可以看为用i-1来划分j有dp(i-1,j)
    综上所述:dp(i,j)=dp(i,j-i)+dp(i-1,j)