写了个python的dfs,一个树节点有m个子节点,但是准确率只有46%,求改正


prices = []
for _ in range(n):
    line = input().strip()  # 使用 strip() 移除字符串两端的空白字符
    prices.append(line)

price_int = [[0] * m for _ in range(n)]
for i in range(n):
    for j in range(m):
        char = prices[i][j]
        if char.isdigit():
            price_int[i][j] = int(char)
        elif char.isalpha():
            if char.isupper():
                price_int[i][j] = ord(char) - ord('A') + 10
            else:
                price_int[i][j] = ord(char) - ord('a') + 36

# 递归树有m个分支,每个分支递归完,返回下一层级的最大值,再和本层级的其它分支比大小
def dfs(day, budget_left, memory):
    if budget_left < 0 or day >= n:
        return day
    max_day = day            #m个个分支的最大值
    for i in range(m):
        if budget_left >= price_int[day][i]:
            next_day = day + 1
            next_budget = budget_left
            if day>=7 and next_day != 0:
                next_budget -= price_int[day][memory[day - 7]]
            else:
                next_budget -= price_int[day][i]
            memory.append(i)
            current_day = dfs(next_day, next_budget, memory)
            max_day = max(max_day, current_day)
            memory.pop()         # 回溯,防止其它分支的输入被篡改
    return max_day

memory = []
max_days = dfs(0, budget, memory)
print(max_days)