网站用户管理系统,wordpress新建字段,婚庆网站建设策划案费用预算,模板网站价格表题目
我们的黑虎阿福改行当小偷啦!然后他去偷东西#xff0c;然后那个zz报警系统只有在他洗劫两家相邻的店才会报警#xff0c;然后求他在不触发警报的情况下能拿到最多的钱。 #xff08;注#xff1a;没有偷了会扣钱的店铺#xff09; 输入
2 3 1 8 2 4 10 7 6 1…题目
我们的黑虎阿福改行当小偷啦!然后他去偷东西然后那个zz报警系统只有在他洗劫两家相邻的店才会报警然后求他在不触发警报的情况下能拿到最多的钱。 注没有偷了会扣钱的店铺 输入
2 3 1 8 2 4 10 7 6 14
输入
8 24
样例解释
对于第一组样例阿福选择第 2 家店铺行窃获得的现金数量为 8 。 对于第二组样例阿福选择第 1 和 4 家店铺行窃获得的现金数量为 10 14 24 。 解题思路
他只有两种情况就是间隔一个或间隔两个再洗劫。因为如果间隔三个那不如把中间的那家也洗劫掉。 所以 f[i]max(f[i-2],f[i-3])a[i]; 代码有什么好解释
#includecstdio
#includeiostream
using namespace std;
int n,t,a[100001],f[100001];
int main()
{scanf(%d,t);for (int t11;t1t;t1){scanf(%d,n);for (int i1;in;i) scanf(%d,a[i]),f[i]0;f[1]a[1];f[2]a[2];for (int i3;in;i)f[i]max(f[i-2],f[i-3])a[i];printf(%d\n,max(f[n],f[n-1]));}
}