有道第三题求最大子序列和 [求分析内存消耗]语言 Java

bupt_xiaoz 2010-05-31 03:28:42
源码如下,提交BOJ然后MLE,内存用了234440kB,不知道在哪里开销比较大,求大牛不吝赐教~
public class Main {
static int data[] = new int[50001];

static int ff[] = new int[50001];

static int bb[] = new int[50001];

static int solve(int n) {
int s = 0;
for (int i = 0; i < n; ++i) {
if (i > 0)
ff[i] = ff[i - 1];
else
ff[i] = 0;
if (s < 0)
s = 0;
s += data[i];
ff[i] = ff[i] > s ? ff[i] : s;
}
s = 0;
for (int i = n - 1; i >= 0; --i) {
if (i < n - 1)
bb[i] = bb[i + 1];
else
bb[i] = 0;
if (s < 0)
s = 0;
s += data[i];
bb[i] = bb[i] > s ? bb[i] : s;
}
int ans = 0;
for (int i = 0; i < n - 1; ++i)
ans = ans > (ff[i] + bb[i + 1]) ? ans : (ff[i] + bb[i + 1]);
return ans;
}

public static void main(String[] args) {
java.util.Scanner sin = new java.util.Scanner(System.in);
int T = sin.nextInt();

while (--T > -1) {
int n = sin.nextInt();

int sum = 0, cnt = 0;
for (int i = 0; i < n; ++i) {
data[i] = sin.nextInt();
sum += data[i];
if (data[i] > 0)
cnt++;
}
if (cnt <= 2) {
System.out.println(sort(n));
continue;
}
int s1 = solve(n);
for (int i = 0; i < n; ++i)
data[i] = -data[i];
int s2 = sum + solve(n);
System.out.println(s1 > s2 ? s1 : s2);
}
}

static int sort(int n) {
int ret[] = new int[2];
ret[0] = ret[1] = -10001;
for (int i = 0; i < n; i++)
if (data[i] > ret[0]) {
ret[1] = ret[0];
ret[0] = data[i];
} else if (data[i] > ret[1]) {
ret[1] = data[i];
}
return ret[0] + ret[1];
}
}
...全文
99 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级大笨狼 2010-05-31
  • 打赏
  • 举报
回复
F(head,len,sum){
Maxsum=(sum>Maxsum)?sum:Maxsum;
if( head+len< Arr.length )
{
if(Arr[head]<0)
{
F(head+1,len, sum+Arr[head+len]-Arr[head]);
}
else
{
F(head,len+1, sum+Arr[head+len]);
}
}
}

F(0,2,Arr[0]+Arr[1]);
这样就是O(n)
bupt_xiaoz 2010-05-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 superdullwolf 的回复:]

最大子序列和

O(n)
[/Quote]
原题链接
是求循环数组的子序列和的最大值
http://poj.youdao.com/practice/I/
超级大笨狼 2010-05-31
  • 打赏
  • 举报
回复
最大子序列和

O(n)

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧