题目


题目地址

思路


显然是最大子列和的进化版,那就先思考下经典的最大子列和。这也是道思维题,啥算法也没用到,全是思维技巧,真心不知道考试遇到这种题该怎么办了。

存放答案的一个类,我把它看成一个袋子,需要什么都可以“.”出来
class ans
{
static int maxsub = 0;
static int firstElement = 0;
static int lastElement = 0;
static int lastElementIndex = 0;
}

经典的最大子列和只是更新了maxsub,现在可以同时更新firstElement和lastElement,最后输出即可。

这时更新一下
if (tempsum > ans.maxsub)
{
ans.lastElement = arr[i];
ans.firstElement = firstElement;
ans.maxsub = tempsum;
}
以及
这时更新一下
if (tempsum < 0)
{
if (i + 1 < arr.length)
firstElement = arr[i + 1];
tempsum = 0;
}
对于为什么可以这样,我相信仔细思考一定能看懂。一定要先思考,再看答案,这样才能有共鸣。

代码


package 网易云数据结构;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.security.acl.LastOwnerException;
import java.util.Scanner; public class Main
{
public static void main(String[] args) throws IOException
{
StreamTokenizer in = new StreamTokenizer(new BufferedReader(
new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
boolean isAllNegative = true; // 读入k个数据
int k = (int) in.nval;
int arr[] = new int[k + 1];
for (int i = 1; i <= k; i++)
{
in.nextToken();
arr[i] = (int) in.nval;
if (arr[i] >= 0)
{
isAllNegative = false;
}
} // 处理数据
int tempsum = 0;
int firstElement = arr[1];
for (int i = 1; i < arr.length; i++)
{
tempsum += arr[i]; if (tempsum > ans.maxsub)
{
ans.lastElement = arr[i];
ans.firstElement = firstElement;
ans.maxsub = tempsum;
}
if (tempsum < 0)
{
if (i + 1 < arr.length)
firstElement = arr[i + 1];
tempsum = 0;
}
} // 输出
if (isAllNegative)
{
System.out.println(0 + " " + arr[1] + " " + arr[arr.length - 1]);
} else
System.out.println(ans.maxsub + " " + ans.firstElement + " "
+ ans.lastElement);
}
} class ans
{
static int maxsub = 0;
static int firstElement = 0;
static int lastElement = 0;
static int lastElementIndex = 0;
}

网易云数据结构- Maximum Subsequence Sum的更多相关文章

  1. 中国大学MOOC-陈越、何钦铭-数据结构-2015秋 01-复杂度2 Maximum Subsequence Sum (25分)

    01-复杂度2 Maximum Subsequence Sum   (25分) Given a sequence of K integers { N​1​​,N​2​​, ..., N​K​​ }. ...

  2. PAT Maximum Subsequence Sum[最大子序列和,简单dp]

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

  3. Algorithm for Maximum Subsequence Sum z

    MSS(Array[],N)//Where N is the number of elements in array { sum=; //current sum max-sum=;//Maximum ...

  4. PAT1007:Maximum Subsequence Sum

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

  5. PTA (Advanced Level) 1007 Maximum Subsequence Sum

    Maximum Subsequence Sum Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous su ...

  6. 【DP-最大子串和】PAT1007. Maximum Subsequence Sum

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

  7. 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 ...

  8. 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 ...

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

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

随机推荐

  1. java菜鸟篇<一> 对JsonObject 和JsonArray知识点理解

    今天遇到从前台拿值(json数组格式),从request里边取值,然后经过一系列的处理方式,在用request返回去 1.先把request里的值赋值给String string类型的变量 2.因为前 ...

  2. http://www.cnblogs.com/yyyyy5101/archive/2011/03/11/1981078.html

    http://www.cnblogs.com/yyyyy5101/archive/2011/03/11/1981078.html

  3. PDO基础知识

    使用PDO之前首先开启PHP的PDO扩展,方法见百度. PDO连接数据库的方式有三种 1.通过参数的形式连接数据库 (推荐) //通过参数形式连接数据库 try{ $dsn = 'mysql:host ...

  4. GitHub项目协作基本步骤

    1.查找某个项目,然后Fork 2.打开GitHub For Windows,发现刚才Fork的项目 3.对着项目点击Clone,将之复制至本地 4.使用Eclipse等进行开发,如新增一个文件 5. ...

  5. 【待整理】IOS开发之下载

    一.传统的下载文件的方式 - (void)downloaderWithUrl:(NSURL *)url { NSURLRequest *request = [NSURLRequest requestW ...

  6. Hibernate中3种结果转换的详细说明(转)

    Hibernate中3种结果转换的详细说明 在hibernate使用的过程中.我们通常需要对结果进行解释. Hibernate为我们提供了以下3种解释方法: Transformers.ALIAS_TO ...

  7. BZOJ NOI十连测 第一测 T2

    思路:看到这题,就感觉是一道很熟悉的题目: http://www.cnblogs.com/qzqzgfy/p/5535821.html 只不过这题的K最多可以到N,而且边权不再只是1,考试的时候yy了 ...

  8. C# ref_out_params方法的参数_4种类型的参数

    之前学习C#没有做笔记的习惯,因此有些基础上的东西并没有很好地整理起来,虽然这些东西比较常用,因此也没什么影响,但总觉得不整理一下感觉老是有种陌生感.今天特别整理一下C#4种类型的参数. 一.按值传递 ...

  9. android 中FragmentActivity中模拟返回键返回上一个Activity效果

    FragmentTransaction中先加入一个Fragment,这个Fragment就是当前要显示的Fragment, 当通过事件触发显示第二个Fragment时,在加入第二个Fragment并调 ...

  10. \s+(?<request_time>\d+(?:\.\d+)?)\s+ 解释

    <pre name="code" class="html"><pre name="code" class="ht ...