编辑代码

#include <stdio.h>


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;
}