不相鄰最大和

2021-09-16 22:07:13 字數 767 閱讀 9108

description

n個數的序列,選出任意個,要求不能相鄰,求不相鄰的最大和。

input

第一行是乙個正整數 n。

第二行是n 個用空格隔開的正整數。

output

只有乙個正整數,為不相鄰的最大和。

sample input

53 10 8 20 21

sample output

325≤n≤1000000

1≤每個數≤500

題目分析

這個很明顯是一道dp題qwq

因為對乙個數,我們有兩個選擇,那便是需要2個維度——乙個表示這個數選了,乙個表示沒有選

如果上乙個沒有選,那麼當前的選或者不選都可以,所以我們取大的值

如果上乙個選了的的話並且當前想要去選的話,那麼我們便得要選擇上乙個沒選過的來加上了;

實踐上面無非是:

我們設當沒選了的最優的是:f[i][0]

當前選了的最優的是: f[i][1]

那麼根據上面的分析便可以得到狀態轉移方程:

f[i][0] = max

f[i][1] = f[i-1][0]+a[i];

**

#include using namespace std;

int n,ans;

int a[1000009],f[1000009][1];

int main()

不相鄰子串行最大和

include include using namespace std int msnae vector nums int incl nums 0 incl表示當可以包含nums i 時,前i個元素所能達到的最大值 初始化為第乙個元素 int excl 0 excl表示不包含第nums i 時,前i...

元素互不相鄰的最大和子陣列

對於乙個給定的陣列,在其中選取其子陣列,要求相鄰的元素不能選取,且要保證選出的子陣列元素和最大。輸入陣列長度及其元素,輸出所選子陣列的和。測試輸入 7 4 2 6 1 3 5 8 測試輸出 21dp i 代表到截至第i項的最大和 可能不包括第i項 分析 對於任何乙個dp問題,其都牽扯到選與不選某個元...

求不相鄰的最大子陣列和

參考 題目 給定乙個陣列a,求出一些數,使得每個元素在陣列a裡兩兩不相鄰,並且和最大。選擇第i個元素,那麼第i 1個元素一定不能選 不選擇第i個元素,那麼第二個元素既可以選,也可以不選 includeusing namespace std int main int selected 8 int no...