【发布时间】:2013-04-14 09:38:22
【问题描述】:
下面的算法是否真的使用记忆化来寻找所有可能的方式来改变一个特定的总和?
func count( n, m )
for i from 0 to n
for j from 0 to m
if i equals 0
table[i,j] = 1
else if j equals 0
table [i,j] = 0
else if S_j greater than i
table[ i, j ] = table[ i, j - 1 ]
else
table[ i, j ] = table[ i - S_j, j ] + table[ i, j - 1 ]
return table[ n, m ]
每次调用函数 count 时,它都会从头开始填充表。即使表已经针对某些值进行了初始化,下次调用 count 时,它也不会使用这些值,而是从 i = 0 和 j = 0 重新开始。
【问题讨论】:
标签: algorithm dynamic memoization