struct Place{
int time;
int score;
};
int bestSelect(struct Place places[],int length,int days){
int dp[length+1][days+1];
for(int i=0;i<=length;++i){
for(int j=0;j<=days;++j){
if(i==0 || j==0){
dp[i][j]=0;
}else if(places[i-1].time <=j){
dp[i][j]= (places[i-1].score+dp[i-1][j-places[i-1].time] > dp[i-1][j]) ?
(places[i-1].score+dp[i-1][j-places[i-1].time]) : dp[i-1][j];
}else{
dp[i][j]=dp[i-1][j];
}
}
}
return dp[length][days];
}
int main () {
struct Place places[]={{1,7},{2,8},{3,9},{1,6}};
int length=sizeof(places)/sizeof(places[0]);
// printf("%d",length);
int days=4;
int result = bestSelect(places,length,days);
printf("在%d天内获得的最大评分为:%d\n",days,result);
return 0;
}