整数划分 ,DP 或者直接递归(备忘录消除重复)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1664
将整数n可以划分为多少种呢?
将整数n有多少种最大数为m的划分呢?
用ANS[N][M]表示,N的划分中,最大数不超过M的种类
(不超过==”最大数”可以是 1到M的任意数)
分情况讨论:
1) M==1 , ANS[N][M]=1;(全部由1组成)
2) M>N , ANS[N][M]=ANS[N][N];由于最大数不能也不可能超过N
3) M==N , ANS[N][N]=ANS[N][N-1]+1; (<=N等价于==N U <N,<N==(<=N-1)即 1+ANS[N][N-1])
4) M<N , ANS[N][M]=ANS[N][M-1]+ANS[N-M][M]
一种是递归调用,利用备忘录避免重复
也可以直接用DP.比较简单