这是一道DP入门题目,知识点是“最大连续子序列”

题目大意:给你一个长度为n的数字序列,取其中一段连续的序列,要求和最大;

分析:这是一道裸题,没有什么花里胡哨的东西,主要是写出状态转移方程
        dp[i] = max{dp[i-1] + A[i], A[i]};
   dp[i]是以i位置为结尾位置的最优解。

   对于i位置上的A[i],一定对dp[i]做出了贡献。

   对于i以前的位置,他们的最优解是dp[i-1],当dp[i-1]>=0时,dp[i-1]对dp[i]做出了贡献;反之,dp[i-1]对dp[i]有消极的作用;

我的错误:1.边界dp[1]忘记做了处理
      2.要每次更新起点,铁憨憨我直接把最后更新后的结果当结果了。。

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int Maxn = + ;
int T,n;
int dp[Maxn];
int main()
{
scanf("%d",&T);
for(int t=;t<=T;t++)
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&dp[i]);
int ans = dp[];//用边界对ans初始化
int start = ,ends = ,fstart=;
for(int i=;i<=n;i++)
{
if(dp[i-]>=)
dp[i] += dp[i-];
else
start = i;//起点的更新不一定是最优解
if(dp[i] > ans)
{
ans = dp[i];
fstart = start;//在更新最优解的时候更新起点
ends = i;
}
}
if(t!=) puts("");
printf("Case %d:\n",t);
printf("%d %d %d\n",ans,fstart,ends);
}
return ;
}

最新文章

  1. coreData数据操作
  2. css3 animation 属性众妙
  3. N_F1_APPROVE
  4. ExtJS简单的动画效果2(ext js淡入淡出特效)
  5. break,continue,return 区别
  6. JS基础:this的指向以及call、apply的作用
  7. 解决远程连接MongoDB出现错误
  8. 接口配置信息修改 请填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证
  9. mysql中TIMESTAMP设置默认时间为当前时间
  10. Linux系统下curl命令上传文件,文件名包含逗号无法上传
  11. Window下JDK安装教程
  12. Bzoj2395: [Balkan 2011]Timeismoney(最小乘积生成树)
  13. 1 - Reverse Integer
  14. 打造属于自己的安卓menu
  15. java网络爬虫----------简单抓取慕课网首页数据
  16. jquery 实践操作:iframe 相关操作
  17. 程序员的智囊库系列之3--分布式文件系统(Distributed file systems)
  18. java版RSA工具类
  19. WINDOWS-API:操作网络映射盘-WNetAddConnection2
  20. BSGS算法及拓展

热门文章

  1. manacher算法学习(求最长回文子串长度)
  2. Vuejs中关于computed、methods、watch,mounted的区别
  3. git-ssh-keygen
  4. .net core 简单集成JWT报No authenticationScheme was specified, and there was no DefaultChallengeScheme found错误
  5. 一、RabbitMQ安装与测试连接
  6. IBM IMM默认ID
  7. JVM分为哪些区,每一个区干嘛的?
  8. CSS Reset(样式重置)
  9. Sass函数:Sass Maps的函数-map-has-key($map,$key)
  10. 每天一个Linux命令:whereis(18)