整数划分问题(记忆化搜索和DP方法)

一、 问题 现在有一正整数N,要把它分为若干正整数之和,问有多少种本质不同的分法?

(1)其中最大数不超过m, 有多少种分法?

(2)分割后的正整数的数目不超过m个, 有多少种分法?

(3)分成最大数不超过m, 且每一个数都是正奇数, 有多少种分法?

(4)分成最大数不超过m, 且每一个数都不同,有多少种分法?

(5)分成恰好k个正整数,有多少种分法?

二、分析

(1)最大数不超过 m

  (a)设dp[i][j]表示把数字 i 分成最大数不超过  j 的若干正整数之和所得的方法数

  (b)有如下递推公式 ,核心是最大数m到底选还是不选

(2)分割数不超过m个

  (a)设dp[i][j] 表示把数字 i 分成分割数不超过 j 的若干正整数之和所得的方法数

  (b)递推公式如下:

核心是到底分不分成 j 个

如果分成j个,则预先给每一份分 一个1,那么还剩下n-m个;

如果不分成j个,那就转移到了把i最多分成j-1个数

猜你喜欢

转载自www.cnblogs.com/czsharecode/p/10647413.html