public class TravelOptimization {
public static void travelOptimization(int days, int[] time, int[] score) {
int[][] dp = new int[days + 1][time.length + 1];
for (int i = 1; i <= days; i++) {
for (int j = 1; j <= time.length; j++) {
if (time[j - 1] <= i) {
dp[i][j] = Math.max(dp[i][j - 1], dp[i - time[j - 1]][j - 1] + score[j - 1]);
} else {
dp[i][j] = dp[i][j - 1];
}
}
}
int result = dp[days][time.length];
System.out.println("最大价值为:" + result);
System.out.println("选择的景点为:");
int remainingDays = days;
for (int j = time.length; j > 0 && result > 0; j--) {
if (dp[remainingDays][j] != dp[remainingDays][j - 1]) {
System.out.println("景点" + j + ": 时间=" + time[j - 1] + "天, 评分=" + score[j - 1]);
remainingDays -= time[j - 1];
result -= score[j - 1];
}
}
}
public static void main(String[] args) {
int days = 4;
int[] time = {1, 2, 3, 1};
int[] score = {7, 8, 9, 6};
travelOptimization(days, time, score);
}
}