这一题其实并不需要用二进制或者滑动窗口来优化,只需在判断p[i]为真时在第三重for循环break即可,小部分代码:
for(int k=0;k<=p[i];k++){ if(j<k*t[i]) break; dp[i][j]=max(dp[i][j],dp[i-1][j-k*t[i]]+k*c[i]); }