非重叠子问题递归求解的时间复杂度分析

Time Complexity Analysis for Non-ovarlapping Subproblem Recursive Solution

这里我只是放python代码。

  Rec(Arr,N,K,X) :
     if(X==0 and K==0):
         return 1
     elif(X<=0 or K<=0 or N<0):
        return 0
     else :
         return Rec(Arr,N-1,K,X)+Rec(Arr,N,K-1,X-Arr[N])

假设Arr的所有元素都是不同的,这就得出所有子问题都是不重叠的(只是拿了一个小案例,手动做)

请根据 N、K、X 评估时间复杂度。 感谢阅读这个问题...

基本上这个问题被认为是高度以max(N,K)为界的二叉树的深度优先搜索。所以时间复杂度的顺序受限于 2^max(N,K)。然后 XArr 可能会降低这个时间复杂度。但不清楚,因为它取决于 ArrX 的值。 (例如,如果 Arr=[inf,...,inf],时间复杂度将为 N。)