所以,有人早些时候发布了这个问题,但基本上没有付出任何努力,它的标签很差,然后就关闭了。尽管如此,我认为这可能是一个很好的问题。我发布是因为根据 OP,我的回答(发表在评论中)不同意该解决方案。所以,我试图弄清楚我做错了什么(假设他的答案确实正确):
我们有:
T(N) = T(N-1) + T(N-2) + T(N-3)
其中 N > 3。他没有列出基本情况,但由于 N > 3,我假设 和 可能有 3 个基本T(3)
情况。要计算,我们执行以下操作:T(2)
T(1)
T(K)
T(K) = T(K-1) + T(K-2) + T(K-3)
然后我们必须计算:
T(K-1) = T((K-1)-1) + T((K-1)-2) + T((K-1)-3)
T(K-2) = T((K-2)-1) + T((K-2)-2) + T((K-2)-3)
T(K-3) = T((K-3)-1) + T((K-3)-2) + T((K-3)-3)
等等......这是一个树表示:
L0 T(K)
/ | \
L1 T(K-1) T(K-2) T(K-3)
/ | \ / | \ / | \
L2 T((K-1)-1) T((K-1)-2) T((K-1)-3) T((K-2)-1) T((K-2)-2) T((K-2)-3) T((K-3)-1) T((K-3)-2) T((K-3)-3)
... ... ...
所以我们有 3 个孩子,然后是 9 个孩子,然后是 27 个孩子,......,直到我们达到我们的基本情况。因此,算法是O(3^(N-3))
,N-3
是为了解释三个基本情况,即在 T(4) 之后,我们只能有基本情况,没有更多的分支。
从未提供过实际的解决方案,但就像我说的那样,有人告诉我这是不正确的。任何帮助,将不胜感激。