#2140 解决智力问题(动态规划)
也许是智力问题罢!
从前向后是错误的,因为dp无法继承/表明brianpower(i),导致结果可能偏大。
从后往前是正确的,因为这样能确保一定不会导致活动出现在brainpower中,
class Solution {
public:
long long mostPoints(vector<vector<int>>& questions) {
int N=questions.size();
vector<long long> dp(N+1,0);
dp[N]=0;
for(int i=N-1;i>=0;i--){
long long lastsc=0;
if(i+questions[i][1]+1<N) lastsc=dp[i+questions[i][1]+1];
if(dp[i+1]>lastsc+questions[i][0]) dp[i]=dp[i+1];
else dp[i]=lastsc+questions[i][0];
}
return dp[0];
}
};