[C++] 洗劫店铺

9次阅读
没有评论

共计 696 个字符,预计需要花费 2 分钟才能阅读完成。

题目

一名经验丰富的大盗,打算洗劫一条街上的店铺。
这条街上一共有  家店铺,每家店中都有一些现金。大盗事先踩点得知,如果他同时洗劫两家相邻的店铺,街上的报警系统就会自动启动,然后警察就会蜂拥而至。
作为会编程的你,为了帮助警察破案,请你计算下,这名大盗今晚最多可以盗窃多少现金。

输入描述

输入的第一行是一个整数 ,表示一共有  组数据。
接下来的每组数据,第一行是一个整数 ,表示一共有  家店铺。
第二行是  个被空格分开的正整数,表示每一家店铺中的现金数量。每家店铺中的现金数量均不超过 

输出描述

对于每组数据,输出一行。该行包含一个整数,表示阿福在不惊动警察的情况下可以得到的现金数量。

样例

输入:


2
3
1 8 2
4
10 7 6 14


8
24

数据范围

T501N100000

样例解释

对于第一组样例,选择第 2 家店铺行窃,获得的现金数量为 8。
对于第二组样例,选择第 1 和 4 家店铺行窃,获得的现金数量为 10+14=24。

题解

#pragma GCC optimize(3)
#include
#include
using namespace std;

int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t;
cin >> t;
while(t--){
int n;
cin >> n;
int *l = new int[n+1], *f = new int[n+1];
memset(l,0,sizeof(l));
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++) cin >> l[i];
f[1] = l[1];
for(int j=2;j<=n;j++){f[j] = max(f[j-1], f[j-2]+l[j]); } cout <

正文完
 0
元素
版权声明:本站原创文章,由 元素 于2024-11-19发表,共计696字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码