對於乙個給定的陣列,在其中選取其子陣列,要求相鄰的元素不能選取,且要保證選出的子陣列元素和最大。輸入陣列長度及其元素,輸出所選子陣列的和。
測試輸入
7 4 2 6 1 3 5 8
測試輸出
21dp[i]代表到截至第i項的最大和(可能不包括第i項)
分析:對於任何乙個dp問題,其都牽扯到選與不選某個元素的問題,當你選擇a[i]作為最大和的一部分的時候,最大和就是dp[i-2]+a[i],如果不選擇a[i],那麼最大和就是到dp[i-1];
所以真正的最大和就是以上兩種情況進行比較選擇最大的。
**如下:
#include usingnamespace
std;
int dp[100];//
dp[i]代表到截至第i項的最大和(可能不包括第i項)
intmain();
inti;
dp[0]=a[0
]; dp[
1]=max(a[0],a[1
]);
for(i=2;i<7;i++)cout
<6
];
return0;
}
不相鄰子串行最大和
include include using namespace std int msnae vector nums int incl nums 0 incl表示當可以包含nums i 時,前i個元素所能達到的最大值 初始化為第乙個元素 int excl 0 excl表示不包含第nums i 時,前i...
不相鄰最大和
description n個數的序列,選出任意個,要求不能相鄰,求不相鄰的最大和。input 第一行是乙個正整數 n。第二行是n 個用空格隔開的正整數。output 只有乙個正整數,為不相鄰的最大和。sample input 53 10 8 20 21 sample output 325 n 100...
陣列不相鄰元素之和的最大值
今天下午面試老虎 被問到這題,當時腦子有點蒙,沒寫出來。這題的意思就是給你乙個陣列,讓你計算元素的和,但是這些元素都不能相鄰,求最大的和。其實這題很常見,在leetcode上面也有,但是原題是這樣的 假設你是乙個專業的竊賊,準備沿著一條街打劫房屋。每個房子都存放著特定金額的錢。你面臨的唯一約束條件是...