#include <stdio.h>
#define MAX_N 4
#define MAX_DAYS 4
int maxScore(int times[], int scores[], int n);
int main() {
int times[MAX_N] = {1, 2, 3, 1};
int scores[MAX_N] = {7, 8, 9, 6};
int n = sizeof(times) / sizeof(times[0]);
int result = maxScore(times, scores, n);
printf("最大评分为: %d\n", result);
return 0;
}
int maxScore(int times[], int scores[], int n) {
int dp[MAX_N + 1][MAX_DAYS + 1];
for (int i = 0; i <= n; i++) {
dp[i][0] = 0;
}
for (int j = 0; j <= MAX_DAYS; j++) {
dp[0][j] = 0;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= MAX_DAYS; j++) {
if (j < times[i - 1]) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = (dp[i - 1][j] > dp[i - 1][j - times[i - 1]] + scores[i - 1]) ?
dp[i - 1][j] : dp[i - 1][j - times[i - 1]] + scores[i - 1];
}
}
}
return dp[n][MAX_DAYS];
}