题目大意:Alice是个手机发烧友,最近出了一款她十分喜欢的手机。决定兼职赚钱买手机。现在一天有连续n个兼职,她每次可以连续做m个兼职,每连续做m个时会消耗一点体力,她共有k点体力。求这天她最多可能得到的报酬。
输入:第一行(三个整数) n,m,k
第二行(n个整数 )每个兼职的报酬
输出:可能得到的最大收益
样例输入:7 1 3
7 10 7 18 5 33 0
样例输出:61
分析:题意大致可理解为在n个数组中,求最大k个长度为m的子段之和。一下是自己递归求解代码,有不足之处请指正。
#include<iostream>
#include<numeric>
using namespace std;
int jobPay[5000];
int n, m, k;
int highestPayment(int timeBegin, int timeEnd, int workcout)
{
int mayPayment[2] = {0,0};
if ((timeEnd - timeBegin) <= workcout*m)
return accumulate(jobPay + timeBegin, jobPay + timeEnd,0);
if (workcout==1)
mayPayment[0] = accumulate(jobPay &