Recursion 求一个数可以写成两个或多个正数之和的方法的算法

Recursion 求一个数可以写成两个或多个正数之和的方法的算法,recursion,dynamic-programming,memoization,integer-partition,Recursion,Dynamic Programming,Memoization,Integer Partition,这是一个家庭作业问题,必须使用动态编程方法解决 到目前为止,我所做的是: 设f(x)表示可以写入x的次数: 4: 3 + 1 4: (2 + 1) + 1 4: 2 + 2 4: (1 + 1) + (1 + 1) 那么f(x)=f(x-1)+1;f(5)=f(4)+1(5=4+1) 但我认为这不是正确的方法。有人愿意帮忙吗 问题的实质示例如下: 可以写入第4种方式的数量: 4: 3 + 1 4: (2 + 1) + 1 4: 2 + 2 4: (1 + 1) + (1 + 1) 此表示形式

这是一个家庭作业问题,必须使用动态编程方法解决

到目前为止,我所做的是:

设f(x)表示可以写入x的次数:

4: 3 + 1
4: (2 + 1) + 1
4: 2 + 2
4: (1 + 1) + (1 + 1)
那么f(x)=f(x-1)+1;f(5)=f(4)+1(5=4+1)

但我认为这不是正确的方法。有人愿意帮忙吗

问题的实质示例如下:

可以写入第4种方式的数量:

4: 3 + 1
4: (2 + 1) + 1
4: 2 + 2
4: (1 + 1) + (1 + 1)

此表示形式为call。它可以用不同的方法解决

比如说

f(x, m) - number of partitions of x 
such that the largest number in that partition is m
然后

所以f(4,1),f(4,2),f(4,3),f(4,4)的和=5(4如果不算4本身就是一个分区)

f(1, 1) = 1
f(2, 1) = f(1, 1) = 1
f(2, 2) = 1
f(3, 1) = f(2, 1) = 1
f(3, 2) = f(1, 1) = 1 //+ f(1, 2) zero
f(4, 1) = f(3, 1) = 1 
f(4, 2) = f(2, 1) + f(2, 2) = 2
f(4, 3) = f(1, 1) = 1 // + f(1, 2) + f(1, 3) zeroes
f(4, 4) = 1