Algorithm 前一篇文章中动态规划解决方案的运行时间(球进入垃圾箱)

Algorithm 前一篇文章中动态规划解决方案的运行时间(球进入垃圾箱),algorithm,performance,time,dynamic-programming,Algorithm,Performance,Time,Dynamic Programming,问题中 答案讨论了将球放入垃圾箱的动态规划算法,我试图确定运行时间,因为答案中没有提到 快速总结:给定M个不可区分的球和N个可区分的箱子,动态规划表条目[i][j]中的条目表示可以将i个球放入j个箱子的唯一方式的数量 S[i][j] = sum(x = 0 -> i, S[i-x][j-1]) 很明显,动态规划2D数组的大小是O(MN)。但是,我试图确定总和对运行时间的影响 我知道值的总和(1…x)意味着我们必须访问从1到x的值。这是否意味着,对于每个条目计算,因为我们最多只能访问1…M

问题中 答案讨论了将球放入垃圾箱的动态规划算法,我试图确定运行时间,因为答案中没有提到

快速总结:给定M个不可区分的球和N个可区分的箱子,动态规划表条目[i][j]中的条目表示可以将i个球放入j个箱子的唯一方式的数量

S[i][j] = sum(x = 0 -> i, S[i-x][j-1])
很明显,动态规划2D数组的大小是O(MN)。但是,我试图确定总和对运行时间的影响

我知道值的总和(1…x)意味着我们必须访问从1到x的值。这是否意味着,对于每个条目计算,因为我们最多只能访问1…M个其他值,所以运行时间在O((M^2)N)范围内?
如有任何澄清,将不胜感激。谢谢

如果将列总和保留在附加表中,则可以避免求和时间过长

当您计算
S[i][j]
时,还要填写
Sums[i,j]=Sums[i-1,j]+S[i,j]
,然后将此值用于右侧的单元格
S[i,j+1]

注意,您确实需要只存储sum表的两行甚至一行