任意选若干个不相邻的数得到的和最大【dp】
非相邻数最大和
///*任意选若干个不相邻的数得到的和最大*/ #include<cstdio> #include<cstring> #include<queue> #include<iostream> #define maxn 105 #define maxm 10005 #define INF 0x3f3f3f3f #define LL long long using namespace std; int n,m,t; int a[maxn]; int dp[maxn]; vector<pair<int, int> >E[maxn]; int main() { while(cin>>n) { for(int i=0; i<n; i++) cin>>a[i]; dp[0]=a[0]; dp[1]=max(a[0],a[1]); for(int i=2; i<n; i++) { dp[i]=max(dp[i-1],dp[i-2]+a[i]); } cout<<dp[n-1]<<endl; } return 0; } /* 7 1 2 4 1 7 8 3 15 */