top1编程
← 返回题目
题解

【提高】取数

1 条题解

  • 0
    @ 2026-7-28 22:44:43
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    const int N = 55;
    int dp[N],a[N],n;
    int maxn = -1; 
    
    int main()
    {
        scanf("%d",&n);
        for (int i = 1;i <= n;i++) scanf("%d",&a[i]);
        
        dp[1] = a[1];
        dp[2] = max(a[1],a[2]);
        
        maxn = max(dp[1],dp[2]);//与dp[1],dp[2]比较,更新maxn
        
        for (int i = 3;i <= n;i++) 
        {
            dp[i] = max(dp[i - 1],dp[i - 2] + a[i]);
            maxn = max(maxn,dp[i]);//与dp[1~n]比较,更新maxn
        }
        //for (int i = 1;i <= n;i++) printf("%d ",dp[i]);
        cout << maxn << endl;//maxn = dp[n]
        return 0;
    }
    
    • 1