def optimize_trip(days, places):
n = len(places)
dp = [[0] * (days + 1) for _ in range(n + 1)]
for i in range(1, n + 1):
for j in range(1, days + 1):
time_needed = places[i - 1][0]
score = places[i - 1][1]
if j >= time_needed:
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - time_needed] + score)
else:
dp[i][j] = dp[i - 1][j]
selected_places = []
i, j = n, days
while i > 0 and j > 0:
if dp[i][j] != dp[i - 1][j]:
selected_places.append(places[i - 1][2])
j -= places[i - 1][0]
i -= 1
selected_places.reverse()
return dp[n][days], selected_places
def main():
days = 4
places = [
(1, 7, "故宫"),
(2, 8, "颐和园"),
(3, 9, "长城"),
(1, 6, "天坛")
]
total_score, selected_places = optimize_trip(days, places)
print(f"在{days}天内,可以获得最大总评分为: {total_score}")
print(f"选择的景点为: {', '.join(selected_places)}")
if __name__ == "__main__":
main()