第九章 動態規劃 1301 大盜阿福

2021-10-05 15:27:34 字數 1127 閱讀 9706

1301:大盜阿福

時間限制: 1000 ms 記憶體限制: 65536 kb

提交數: 3388 通過數: 1400

【題目描述】

阿福是一名經驗豐富的大盜。趁著月黑風高,阿福打算今晚洗劫一條街上的店鋪。

這條街上一共有 n 家店鋪,每家店中都有一些現金。阿福事先調查得知,只有當他同時洗劫了兩家相鄰的店鋪時,街上的報警系統才會啟動,然後警察就會蜂擁而至。

作為一向謹慎作案的大盜,阿福不願意冒著被警察追捕的風險行竊。他想知道,在不驚動警察的情況下,他今晚最多可以得到多少現金?

【輸入】

輸入的第一行是乙個整數t(t≤50) ,表示一共有t組資料。

接下來的每組資料,第一行是乙個整數n(1≤n≤100,000) ,表示一共有n家店鋪。第二行是n個被空格分開的正整數,表示每一家店鋪中的現金數量。每家店鋪中的現金數量均不超過1000。

【輸出】

對於每組資料,輸出一行。該行包含乙個整數,表示阿福在不驚動警察的情況下可以得到的現金數量。

【輸入樣例】23

1 8 2

410 7 6 14

【輸出樣例】824

【提示】

對於第一組樣例,阿福選擇第2家店鋪行竊,獲得的現金數量為8。

對於第二組樣例,阿福選擇第1和4家店鋪行竊,獲得的現金數量為10+14=24。

思路:f[i]為盜竊前i家店鋪的最優值,那麼f[n]就是盜竊前n家店鋪的最優值;面臨的每個抉擇就是盜還是不盜?

盜:f[i-2]+a[i];為前i-2家店鋪的最優值+現在盜的店鋪;

不盜:f[i-1];就是前f[i-1]家店鋪的最優值;最後輸出f[n].

#include

#include

#include

#include

using

namespace std;

int f[

100009

],a[

100001];

intmain()

for(

int i =

2;i <= n;i++

)printf

("%d\n"

,f[n]);

}return0;

}

動態規劃 ybt1301 大盜阿福

阿福是一名經驗豐富的大盜。趁著月黑風高,阿福打算今晚洗劫一條街上的店鋪。這條街上一共有 n n 家店鋪,每家店中都有一些現金。阿福事先調查得知,只有當他同時洗劫了兩家相鄰的店鋪時,街上的報警系統才會啟動,然後警察就會蜂擁而至。作為一向謹慎作案的大盜,阿福不願意冒著被警察追捕的風險行竊。他想知道,在不...

第九章 動態規劃 1305 Maximum sum

輸入樣例 110 1 1 2 2 3 3 4 4 5 5 輸出樣例 13 提示 就是求最大子段和問題,樣列取2,2,3,3,4和5,baidu搜poj 2479 maximum sum,可獲得大量經典最大子段和問題的題目解析,本題o n2 演算法超時,必須用o n 演算法。思路 從左到右分別求出它們...

第九章 動態規劃 1300 雞蛋的硬度

1300 雞蛋的硬度 時間限制 1000 ms 記憶體限制 65536 kb 題目描述 最近xx公司舉辦了乙個奇怪的比賽 雞蛋硬度之王爭霸賽。參賽者是來自世界各地的母雞,比賽的內容是看誰下的蛋最硬,更奇怪的是xx公司並不使用什麼精密儀器來測量蛋的硬度,他們採用了一種最老土的辦法 從高度扔雞蛋 來測試...