经典最大连续子序列,dp[0]=a[0],状态转移dp[i]=max(dp[i-1]+a[i],a[i])找到最大的dp[i].

难点在于记录起点,这里同样利用动态规划s[i],如果dp[i]选择的是dp[i-1]+a[i]那么s[i]=s[i-1]dp[i]与dp[i-1]存在共同的起点,如果的dp[i]选择的是a[i],那就说明他是以a[i]为起点的新序列。s[i]=a[i].一开始想从终点一直向前遍历找到a[i]<0的下一个就是起点,有一个点无法通过24分,后来才发现这是一种极为智障的想法。比如1000 2000 -1 100 200这个序列,结果为3299 100 200,显然起点应该是1000才对。

#include <bits/stdc++.h>
using namespace std;
int a[];
int main()
{
int k;
scanf("%d", &k);
int i;
for (i = ; i < k; i++)
{
scanf("%d", &a[i]);
}
vector<int>dp(k + , -);
vector<int>s(k + , );
dp[] = a[];
for (i = ; i < k; i++)
{
dp[i] = max(dp[i - ] + a[i], a[i]);
if (dp[i] == dp[i - ] + a[i])
s[i] = s[i - ];
else
s[i] = i;
}
int start, end;
int max = dp[];
int j = ;
for (i = ; i < k; i++)
{
if (dp[i] > max)
{
max = dp[i];
j = i;
}
}
bool flag = false;
for (i = ; i < k; i++)
{
if (a[i] > )
flag = true;
}
if (max >= )
{
/*end = j;
for (; j >= 0; j--)
{
if (a[j] < 0)
break;
}
if (j == -1)
{
j = 0;
}
else if (j >= 0 && a[j] < 0)
{
j = j + 1;
}
start = j;*/
printf("%d %d %d\n", max, a[s[j]], a[j]);
}
else if (flag == false)
{
printf("0 %d %d\n", a[], a[k - ]);
}
}

[pat]1007 Maximum Subsequence Sum的更多相关文章

  1. python编写PAT 1007 Maximum Subsequence Sum(暴力 分治法 动态规划)

    python编写PAT甲级 1007 Maximum Subsequence Sum wenzongxiao1996 2019.4.3 题目 Given a sequence of K integer ...

  2. PAT 1007 Maximum Subsequence Sum(最长子段和)

    1007. Maximum Subsequence Sum (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...

  3. PAT 1007 Maximum Subsequence Sum 最大连续子序列和

    Given a sequence of K integers { N1, N2, …, NK }. A continuous subsequence is defined to be { Ni, Ni ...

  4. PAT 1007 Maximum Subsequence Sum (最大连续子序列之和)

    Given a sequence of K integers { N1, N2, ..., *N**K* }. A continuous subsequence is defined to be { ...

  5. PAT 1007 Maximum Subsequence Sum (25分)

    题目 Given a sequence of K integers { N​1​​ , N​2​​ , ..., N​K​​ }. A continuous subsequence is define ...

  6. PAT甲 1007. Maximum Subsequence Sum (25) 2016-09-09 22:56 41人阅读 评论(0) 收藏

    1007. Maximum Subsequence Sum (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...

  7. PAT 甲级 1007 Maximum Subsequence Sum (25)(25 分)(0不是负数,水题)

    1007 Maximum Subsequence Sum (25)(25 分) Given a sequence of K integers { N~1~, N~2~, ..., N~K~ }. A ...

  8. 1007 Maximum Subsequence Sum (PAT(Advance))

    1007 Maximum Subsequence Sum (25 分)   Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A ...

  9. PAT Advanced 1007 Maximum Subsequence Sum

    题目 1007 Maximum Subsequence Sum (25分) Given a sequence of K integers { N1, N2, ..., N**K }. A contin ...

随机推荐

  1. C#学习之委托和事件

    C#学习中,关于委托和事件的一些见解: 一.C语言中的函数指针 想要理解什么是委托,就要先理解函数指针的概念.所谓函数指针,就是指向函数的指针(等于没说-.-).比如我定义了两个函数square和cu ...

  2. 操作系统中的IPC机制(inter-process Communication)

    http://www.cnblogs.com/tsiangleo/p/4902695.html

  3. c++ assert() 使用方法

    assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h> void assert( i ...

  4. [administrative][CentOS] 新装系统时如何正确精准的选择基础环境和软件包

    出于不同的目的,在进行全新CentOS安装的时候,我们到底应该如何作出选择. 是mininal,base server, base web server, 还是啥? 答案在这里: https://ac ...

  5. linux学习:【第2篇】常用命令

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! linux学习:[第2篇]常用命令 基本命令 //打开终端: CentOS:在任何地方,右键-- ...

  6. LeetCode 852 Peak Index in a Mountain Array 解题报告

    题目要求 Let's call an array A a mountain if the following properties hold: A.length >= 3 There exist ...

  7. Java 生成三位随机数

    调用这个Math.Random()函数能够返回带正号的double值,该值取值区间是[0.0,1.0),注意,它是左闭右开区间.返回值是一个伪随机选择的数,在该范围内(近似)均匀分布. 如果生成三位随 ...

  8. 机器Coding For WinForm

    declare @objname varchar(90)='AutoProjectModel'declare @modelns varchar(90)='ACL.Models'declare @dpc ...

  9. svn 客户端安装 windows

    windows使用的 https://tortoisesvn.net/ 下载中文语言包 安装 安装完安装语言包 看到这个代表svn客户端可以用了 windows客户端下载TortoiseSVN软件进行 ...

  10. wamp设置本地访问路径为a.com

    我们在用wamp进行本地建站时经常会碰到页面样式无法正常加载,这是因为没有正确加载css路径,那我们就用wamp设置本地访问路径为a.com指向本地的一个虚拟空间,如何操作呢?下面就跟随ytkah一起 ...