环形整数串
Time Limit:1s | Memory limit:32M |
Accepted Submit:217 | Total Submit:1177 |
你知道最大和子串问题么? 就是给你一个整数串,要你求出其中的一个连续子串,要求其和最大。 比如: 串是 -2 2 0 1 -48 1,显然其最大和连续子串是2 0 1,其和是3。 现的问题是如果求环形整数串的最大连续和子串呢? 请编写一个程序解决这个问题。 输入数据 本题有多组输入数据,你必须处理到EOF为止 每组数据的第一行有一个整数n, (1<=n<=1000000).第2行有n个整数,每个整数都在[-100,100]的范围内 输出数据 每组数据输出一个整数,表示环形整数串最大连续子串和。 输入样例 6 -2 3 0 1 -48 80 2 1 3 输出样例 82 4 求最大循环子串和,与求最大子段和多了一步,就是可以求出最小子串和, 用所有数的和减去最小子串和,判断是否大于最大子串子,如果大于 最大子串和,那就更新最大子串和。这一题有很多种算法,这里所用的是DP算法, 所需的时间复杂度为O(n),常规算法的时间复杂度为O(n^2) |