# Help me in solving DSSA100 problem

### My issue

The Code showing as Timelimit exceeded while submitting

### My code

``````def subset_sum_dynamic_programming(numbers, target_sum):
n = len(numbers)
# Create a 2D table to store the subproblem results
dp = [[False for _ in range(target_sum + 1)] for _ in range(n + 1)]

# Base case: For a target sum of 0, it's always possible to have an empty subset
for i in range(n + 1):
dp[i][0] = True

# Tabulation - fill up the table using dynamic programming
for i in range(1, n + 1):
for j in range(1, target_sum + 1):
if numbers[i - 1] <= j:
dp[i][j] = dp[i - 1][j] or dp[i - 1][j - numbers[i - 1]]
else:
dp[i][j] = dp[i - 1][j]

# Backtrack to find the subset that adds up to the target sum (if it exists)
subset = []
i, j = n, target_sum
while i > 0 and j > 0:
if dp[i][j] and not dp[i - 1][j]:
subset.append(numbers[i - 1])
j -= numbers[i - 1]
i -= 1

return subset if dp[n][target_sum] else None

t = int(input())
for _ in range(t):
X, N = map(int, input().split())
A = list(map(int, input().split()))
result = subset_sum_dynamic_programming(A, X)
if result:
print('Yes')
else:
print('No')

``````

Learning course: Kalasalingam Academy of Research and Education
Problem Link: CodeChef: Practical coding for everyone