Recursion 求一个数可以写成两个或多个正数之和的方法的算法
这是一个家庭作业问题,必须使用动态编程方法解决 到目前为止,我所做的是: 设f(x)表示可以写入x的次数: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) 此表示形式
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