def optimize_tour(total_days, duration, scores):
dp = [[0 for _ in range(total_days + 1)] for _ in range(len(duration) + 1)]
for i in range(1, len(duration) + 1):
for j in range(1, total_days + 1):
if j >= duration[i - 1]:
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - duration[i - 1]] + scores[i - 1])
else:
dp[i][j] = dp[i - 1][j]
max_score = dp[len(duration)][total_days]
selected_spots = []
j = total_days
for i in range(len(duration), 0, -1):
if dp[i][j] != dp[i - 1][j]:
selected_spots.append(i)
j -= duration[i - 1]
selected_spots.reverse()
return max_score, selected_spots
duration = [1, 2, 3, 1]
scores = [7, 8, 9, 6]
total_days = 4
max_score, selected_spots = optimize_tour(total_days, duration, scores)
print("最大价值:", max_score)
print("选择的景点编号:", selected_spots)