function optimizeTravelDynamic(days, places) {
const n = places.length;
const dp = new Array(n + 1).fill(null).map(() => new Array(days + 1).fill(0));
for (let i = 1; i <= n; i++) {
for (let j = 1; j <= days; j++) {
if (places[i - 1].time <= j) {
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - places[i - 1].time] + places[i - 1].score);
} else {
dp[i][j] = dp[i - 1][j];
}
}
}
let remainingDays = days;
let selectedPlaces = [];
for (let i = n; i > 0 && remainingDays > 0; i--) {
if (dp[i][remainingDays] !== dp[i - 1][remainingDays]) {
selectedPlaces.push(places[i - 1].name);
remainingDays -= places[i - 1].time;
}
}
return {
selectedPlaces: selectedPlaces.reverse(),
totalScore: dp[n][days]
};
}
const days = 4;
const places = [
{ name: '故宫', time: 1, score: 7 },
{ name: '颐和园', time: 2, score: 8 },
{ name: '长城', time: 3, score: 9 },
{ name: '天坛', time: 1, score: 6 }
];
const result = optimizeTravelDynamic(days, places);
console.log("选择的景点:", result.selectedPlaces.join(', '));
console.log("总评分:", result.totalScore);