Step 1: Calculate total sum = 1 + 5 + 11 + 5 = 22, target subset sum = 11
Total sum = 22, target = 11
Why: We need to find a subset with sum equal to half the total to split equally.
Step 2: Initialize a boolean array dp of size target+1 with dp[0] = true
dp = [true, false, false, false, false, false, false, false, false, false, false, false]
Why: dp[s] means if sum s can be formed from some subset.
Step 3: Process number 1: update dp for sums that include 1
dp after 1: [true, true, false, false, false, false, false, false, false, false, false, false]
Why: We can form sum 1 using the number 1.
Step 4: Process number 5: update dp for sums that include 5
dp after 5: [true, true, false, false, false, true, true, false, false, false, false, false]
Why: We can form sums 5 and 6 (1+5) now.
Step 5: Process number 11: update dp for sums that include 11
dp after 11: [true, true, false, false, false, true, true, false, false, false, false, true]
Why: We can form sum 11 directly.
Step 6: Process number 5: update dp for sums that include this 5
dp after second 5: [true, true, false, false, false, true, true, false, false, false, true, true]
Why: We can form sum 10 (5+5) and sum 11 remains possible.
Result: dp[11] = true means subset sum 11 is possible.
So, the list can be partitioned into two equal subsets.
Answer: true