# Best Sum with Tabulation

Updated: 01 February 2024

# Problem

The same problem as the Memoization Best problem but we want to take a tabular approach which we can do as an adaptation of the Tabular Can How Sum problem but this time we replace each sub-sum with the shortest sum of the given options

# Tabulation Implementation

The implementation of this can be seen below:

`dynamic-programming/tabulation/best-sum.ts`

```
export const bestSum = (target: number, nums: number[]): number[] | null => {
const table = new Array<number[] | null>(target + 1).fill(null);
table[0] = [];
for (let index = 0; index <= target; index++) {
const element = table[index];
if (element) {
for (const num of nums) {
const nextIndex = index + num;
if (nextIndex in table) {
const nextValue = [...element, num];
const currentValue = table[nextIndex];
if (currentValue === null || currentValue.length > nextValue.length)
table[nextIndex] = nextValue;
}
}
}
}
return table[target];
};
```

In the above, the time complexity $O(m^2 *n)$ and space complexity $O(m^2)$

The reason we say $m^2$ and not $m$ in the time complexity is because of the array copy operation that we do to assign the latest value