一个孩子正在用n个步骤跑上楼梯,并且可以一次走1步,2步或3步。现在编写一个程序来计算孩子能够爬楼梯的方式。如何获得递归调用中的路径
的解决方案看起来像这样(DP可以用来节省时间)
public static int countDP(int n) {
if (n<0)
return 0;
else if (n==0)
return 1;
else {
map[n] = countDP(n-1) + countDP(n-2) + countDP(n-3);
return map[n]; }
}
现在的问题是如何让这些路径?例如对于n = 4,这个函数返回7,如何获得所有可能的路径? (在这个例子中是1111 - 121 - 112 - 211 - 31 - 13 - 22) 有没有办法通过改变当前的程序来做到这一点?
这是不是一个家庭作业的问题,它是由递归和开裂编码访书的动态规划章未来 - 第9章 - 问题1.
这看起来像一个功课疑问... – IMSoP
你到目前为止尝试了什么? –
@IMSoP,如果他们看起来像一个家庭问题复制/粘贴到这里,我们应该还是不应该回答这样的问题? – Roman