表示区间
的不相邻最大子序列和,
那 就是我们要找的答案了。
如果取 的话,
就不能取了,这个情况下
的不相邻最大子序列和 为
如果不取 的话 ,
的不相邻最大子序列和 为
所以
c++
class Solution {
public:
long long subsequence(int n, vector<int>& array) {
vector<long long> dp(n);
dp[0] = max(0,array[0]);
dp[1] = max(dp[0],(long long)array[1]);
for(int i = 2 ; i < n ; i++)
{
dp[i] = max(array[i]+dp[i-2],dp[i-1]);
}
return dp[n-1];
}
};java
import java.util.*;
public class Solution {
public long subsequence (int n, int[] array) {
long dp[] = new long[n];
dp[0] = Math.max(0,array[0]);
dp[1] = Math.max(dp[0],Long.valueOf(array[1]));
for(int i = 2 ; i < n ; i++)
{
dp[i] = Math.max(array[i]+dp[i-2],dp[i-1]);
}
return dp[n-1];
}
}
python
class Solution:
def subsequence(self , n , array ):
# write code here
dp = [0]*n
dp[0] = max(0,array[0])
dp[1] = max(dp[0],array[1])
for i in range(2,n):
dp[i] = max(array[i]+dp[i-2],dp[i-1]);
return dp[n-1];

京公网安备 11010502036488号