1049 大盜阿福

2021-10-09 12:56:23 字數 1126 閱讀 7777

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

這條街上一共有 n 家店鋪,每家店中都有一些現金。

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

作為一向謹慎作案的大盜,阿福不願意冒著被警察追捕的風險行竊。

他想知道,在不驚動警察的情況下,他今晚最多可以得到多少現金?

輸入的第一行是乙個整數 tt,表示一共有 tt 組資料。

接下來的每組資料,第一行是乙個整數 nn ,表示一共有 nn 家店鋪。

第二行是 nn 個被空格分開的正整數,表示每一家店鋪中的現金數量。

每家店鋪中的現金數量均不超過1000。

對於每組資料,輸出一行。

該行包含乙個整數,表示阿福在不驚動警察的情況下可以得到的現金數量。

1≤t≤501≤t≤50,

1≤n≤1e5

2

31 8 2

410 7 6 14

8

24

#include#include#include#includeusing namespace std;

const int maxn=1e5+10;

int f[maxn][2];

int ans;

int t,n;

int a[maxn];

void dp()

}int main(){

cin>>t;

while(t--){

memset(a,0,sizeof(a));

cin>>n;

for(int i=1;i<=n;i++)

cin>>a[i];

dp();

ans=max(f[n][0],f[n][1]);

cout《很顯然是狀態機模型,定義兩種狀態,0:表示當前這家店沒有偷,1:表示偷了當前這家店

因此狀態轉移方程為

f[i][0]=max(f[i-1][0],f[i-1][1]);

f[i][1]=f[i-1][0]+a[i];// 因為不能連續偷兩家店,所以前乙個狀態一定為零

初始化:當f[0][0]是零的時候,上面的狀態轉移方程成立;

AcWing 1049 大盜阿福

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

23 大盜阿福

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

23 大盜阿福

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