编辑代码

def beibao(spots, days):
    # 初始化动态规划表
    dp = [[0 for _ in range(days + 1)] for _ in range(len(spots) + 1)]

    # 填充dp表
    for i in range(1, len(spots) + 1):
        for j in range(1, days + 1):
            spot_time, spot_score = spots[i - 1]
            if spot_time <= j:
                dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - spot_time] + spot_score)
            else:
                dp[i][j] = dp[i - 1][j]

    # 寻找最优解
    result = []
    j = days
    for i in range(len(spots), 0, -1):
        if dp[i][j] != dp[i - 1][j]:
            result.append(spots[i - 1])
            j -= spots[i - 1][0]

    return [spot for _, spot in reversed(result)]

# 景点列表 (时间, 评分)
spots = [(1, 7), (2, 8), (3, 9), (1, 6)]  # 故宫, 颐和园, 长城, 天坛
days = 4  # 总天数

# 打印结果
print(beibao(spots, days))