题解 | #打家劫舍(二)#从打家劫舍(一)的思路中得出

打家劫舍(二)

https://www.nowcoder.com/practice/6a8b2ceb3f8f4e5891939d7d7cbbd2c4

#include <iostream>
#include <vector>

using namespace std;
const int N = 200010;
int a[N];
int n;

int main()
{
    cin>>n;
    for(int i = 0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    vector<int>f(n),g(n);//f代表的是i是被选的,以i为结尾的金额最大,g代表的是i的不被选,以i为结尾的金额最大的。

    int ret = f[0] = a[0];
    for(int i = 1;i<n-1;i++)
    {
        f[i] = g[i-1]+a[i];
        g[i] = max(f[i-1],g[i-1]);
        ret = max(ret,max(f[i],g[i]));
    }
    f[1] = a[1],g[1] = 0;
    int ans = 0;
    for(int i = 2;i<n;i++)
    {
        f[i] = g[i-1]+a[i];
        g[i] = max(f[i-1],g[i-1]);
        ans = max(ans,max(f[i],g[i]));
    }
    printf("%d\n",max(ret,ans));
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:24
大家还是用ai改吧,我心疼得要死,就当花钱买教训吧,人家直接拿完钱就跑路了
程序员小白条:简历修改700....神奇,又不是帮你面试,咋的,简历修改从双非变92了还是没实习变成有大厂实习了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务