特定の合計を変更するすべての可能な方法を見つける次のアルゴリズムは、本当にメモ化を使用していますか?
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 が呼び出されるたびに、テーブルを最初から埋め始めます。テーブルが特定の値に対して既に初期化されている場合でも、次にカウントが呼び出されると、これらの値は使用されず、i = 0 および j = 0 から再び開始されます。