动态规划 大盗阿福
来源:互联网 发布:香港验血 知乎 编辑:程序博客网 时间:2024/06/14 08:43
阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。
这条街上一共有 N 家店铺,每家店中都有一些现金。阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。
作为一向谨慎作案的大盗,阿福不愿意冒着被警察追捕的风险行窃。他想知道,在不惊动警察的情况下,他今晚最多可以得到多少现金?
接下来的每组数据,第一行是一个整数 N (1 <= N <= 100, 000) ,表示一共有 N 家店铺。第二行是 N 个被空格分开的正整数,表示每一家店铺中的现金数量。每家店铺中的现金数量均不超过 1000 。
231 8 2410 7 6 14
824
分析:
用f[i]来存放从i开始所偷得的总价值,因为不能连续偷,所以其实就是比较隔一个偷f[i-1]和隔两个偷f[i-3],哪一个更大,再加上a[i]就可以;
代码:
#include<bits/stdc++.h>
using namespace std;
#define N 100005
int t,n,ans;
int f[N],a[N];
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
memset(f,0,sizeof(f));
ans=0;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
{
f[i]=a[i];
f[i]=max(f[i-2]+a[i],f[i-3]+a[i]); ans=max(ans,f[i]);
}
printf("%d\n",ans);
}
return 0;
}
using namespace std;
#define N 100005
int t,n,ans;
int f[N],a[N];
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
memset(f,0,sizeof(f));
ans=0;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
{
f[i]=a[i];
f[i]=max(f[i-2]+a[i],f[i-3]+a[i]); ans=max(ans,f[i]);
}
printf("%d\n",ans);
}
return 0;
}
0 0
- 动态规划--大盗阿福
- 动态规划 大盗阿福
- 动态规划!!!动态规划!!!
- |NOIOJ|动态规划|8462:大盗阿福
- ACM-动态规划23-大盗阿福
- 动态规划练习--23(大盗阿福)
- 动态规划——大盗阿福
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 动态规划
- 点到点路径和问题(动态规划)
- 2017 小米笔试题 编程题 求树的高度 Java代码实现
- Badboy提示脚本错误解决方法
- Linux的基本指令
- linux下软件安装apt-get yum dpkg rpm 的使用
- 动态规划 大盗阿福
- centOS目录结构详细版
- poj 3159 分糖果 第一次差分约束+ 用堆栈实现spfa(更快)
- Cuda学习笔记
- AndroidImageSlider Android 图片滚动框架
- linux下的yum命令详解
- AOJ.850电缆公司的烦恼
- Python入门(一):爬虫基本结构&简单实例
- ITEXT-字体兼容Linux平台