Question concerning subset sum problem: split into 3 equal subsets
I don't think the proposed algorithm is correct. It may happen that the first solve for $A/3$ picks a set of numbers that makes it impossible to split the remainder into equal halves. Consider this example:

Given the set of numbers $\{1,1,3,3,3,4,8,10\}$, which sum to $A=3*11$
Assume that the first DP picks $||\{1,1,3,3,3\}||_1=11$
It is impossible to split the remaining set $\{4,8,10\}$ into equal halves.

Here's a recursive function in pseudocode instead which computes what you need in a single step:
bool CanBuild3EqualSums(int sumA, int sumB, int sumC, int[] numbers)
{
    if(numbers is empty)
        return sumA == sumB &amp;&amp; sumB == sumC;
    else
        return CanBuild3EqualSums(sumA + numbers[0], sumB, sumC, numbers.WithoutFirst())
            || CanBuild3EqualSums(sumA, sumB + numbers[0], sumC, numbers.WithoutFirst())
            || CanBuild3EqualSums(sumA, sumB, sumC + numbers[0], numbers.WithoutFirst())
}

This is a pure function (without side-effects). Add memoization and you'll end up with a DP algorithm. Of course, there are many other ways to formulate this. There is some potential for a more efficient, practical implementation:

You could pass the index of the next number, instead of the whole array.
You could get rid of sumC, and compute when needed, based on sumA and sumB
If you have small values, a bottom-up formulation might be more efficient.