给定正数数组,找到最大子序列和<=给定和,以使两个元素彼此不相邻

这是我的代码

它通过的情况很少,但并非全部通过, 例如。

元素数n = 6

元素a [n] = {5,5,10,100,5}

总和= 25

输出为15,但输出应为25(5 + 10 + 10)

单击here以查看其在IDE中的工作

#include<bits/stdc++.h>
#define ll long long int
using namespace std;
int main(){
    int n;
    ll sum;
    vector<ll> v;
    cin>>n;
    ll a[n];
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    cin>>sum;
    ll ans = 0;
    ll inc = a[0];
    ll exc = 0;
    ll prev = 0;
    for(int i=1;i<n;i++){
        prev = inc;
        inc = max(exc+a[i],a[i]);
        exc = max(prev,exc);
       // cout<<inc<<" "<<exc<<endl;
       ll ans1 = max(inc,exc);
       if(ans1<=sum){
           ans = max(ans1,ans);
       }
    }
    cout<<ans<<endl;
    return 0;
}
zhang_alex34 回答:给定正数数组,找到最大子序列和<=给定和,以使两个元素彼此不相邻

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3115125.html

大家都在问