最大不相邻子序列和

不相邻最大子序列和

http://www.nowcoder.com/questionTerminal/269b4dbd74e540aabd3aa9438208ed8d


看到这题,很容易观察到这是一个包含子问题的,直接dp。

题目要求是不相邻的子序列值。 什么样子会帮助满足最大呢?
1,序列包含尽可能多的数
2,序列包含尽可能大的数。
考虑不相邻的话,要不要加入第i个数,需要考虑的问题是它前一个i-1 要不要加入,至于i-2则不需要考虑,因为加入第i个数必然可以加入不相邻的i-2 。换句话说,你不会跳过3个数。
换成代码就是 dp[i+3] = max(dp[i+2], dp[i+1]+arr[i])

class Solution {
public:
    long long subsequence(int n, vector<int>& array) {
        // write code 
        long long dp1=0,dp2=0;
        for(auto& it : array) {
            long long dp3= max(dp1+it,dp2);
            dp1 = dp2;
            dp2 = dp3;
        }
        return dp2;
    }
};
全部评论

相关推荐

关于我大学本科四年,想了很多,但还是不知道该怎么动笔&nbsp;“大学四年,是我从懵懂少年走向职场青年的转折期。这一路跌跌撞撞,有迷茫,有遗憾,也有成长和决心。”&nbsp;大一刚进来时仍然有高中那股学习劲,经常一个人去图书馆学高等数学,但后面劲头一过便开始在宿舍开启躺平生活(现在想想那段时间真的很爽,无忧无虑)。由于大一担任班干部,所以经常要跟其他班的班干部交流,在此期间认识了隔壁班的一位女生,短发而很可爱,因为很多团建还有比赛都是我们两班一起参加的,而且我和她都是负责人,所以交集很多,后面慢慢地彼此对产生了好感,所以在大一刚开学的2个月后,我们在一起了,彼此之前都是初恋。但当时我真的是太太太直男了,对感情的想...
真烦好烦真烦:骗哥们可以,别把你自己也骗到了就行。哥们被你骗了真无所谓的,打个哈哈就过了。但希望你打完这段话后擦一下眼角,别让眼泪掉在手机屏幕上了就行。你说的这些话,哥们信一下也是没什么的。还能让你有个心里安慰,但这种话说出来骗骗兄弟就差不多得了,哥们信你一下也不会少块肉,但是你别搞得自己也当真了就行。哥们被你骗一下是真无所谓的,兄弟笑笑也就过去了。真不是哥们想要破你防,你擦擦眼泪好好想想,除了兄弟谁还会信你这些话?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务