#include
#include
using
namespace
std;
int msnae(vector
& nums)
int incl = nums[0]; //incl表示當可以包含nums[i]時,前i個元素所能達到的最大值;初始化為第乙個元素
int excl = 0; //excl表示不包含第nums[i]時,前i個元素所能達到的最大值;初始化為0;
for (int i=1; iint temp = incl;
incl = max(excl+nums[i], incl); //更新incl;1.不包含前乙個元素,包括本元素(excl+nums[i]);2. 不包括本元素(incl)的較大值
excl = temp; //excl跟新為可能包括前乙個元素的值(一定不包括i所指元素)
}return incl;
}int main(int argc, const
char * argv) ;
int ans = msnae(test);
printf("%d\n", ans);
return
0;}
不相鄰最大和
description n個數的序列,選出任意個,要求不能相鄰,求不相鄰的最大和。input 第一行是乙個正整數 n。第二行是n 個用空格隔開的正整數。output 只有乙個正整數,為不相鄰的最大和。sample input 53 10 8 20 21 sample output 325 n 100...
元素互不相鄰的最大和子陣列
對於乙個給定的陣列,在其中選取其子陣列,要求相鄰的元素不能選取,且要保證選出的子陣列元素和最大。輸入陣列長度及其元素,輸出所選子陣列的和。測試輸入 7 4 2 6 1 3 5 8 測試輸出 21dp i 代表到截至第i項的最大和 可能不包括第i項 分析 對於任何乙個dp問題,其都牽扯到選與不選某個元...
連續子串行最大和
這道題目使用最大和問題的分治演算法 package com.divide.cc author sunnyboy runtime is o nlogn public class sumsequence int maxsum maxsubsequencesum a system.out.println ...