OJ上的java代码为什么总是内存超限啊?有代码(最大连续子列和问题) java最大连续子序列 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static int maxsubsum(int[] seq) { int maxsum=-9999; int thissum=0; //遍历所有子序列(包括包含单个数的子序列) for(int i=0;i<seq.length;i++) for(int j=i;j<seq.length;j++) { //计算每个子序列的和值,记录这些和值里的最大值以及开始结束位置 for(int k=i;k<=j;k++) thissum += seq[k]; if(thissum >= maxsum) { maxsum = thissum; start = i; end = j; } } }你的子序列没遍历完,而且以0为界是什么意思呢这个还涉及到多个相同最大值和值子序列的情况没考虑如果要考虑的话需要将start,end设计为数组或则Map个人意见,仅供参考 public static int maxsubsum(int[] seq) { int maxsum=-9999; int thissum=0; //遍历所有子序列(包括包含单个数的子序列) for(int i=0;i<seq.length;i++) for(int j=i;j<seq.length;j++) { //计算每个子序列的和值,记录这些和值里的最大值以及开始结束位置 for(int k=i;k<=j;k++) { thissum += seq[k]; if(thissum >= maxsum) { maxsum = thissum; start = i; end = j; } //重置thissum thissum =0; } } return maxsum; } 上网本没法测试,尝试着写,呵呵 还是不管用这是java代码import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int k=in.nextInt(); int maxsum=0; int thissum=0; int current=0; for(int i=0;i<k;i++) { current=in.nextInt(); thissum+=current; if (thissum>maxsum) maxsum=thissum; else if (thissum<0) thissum=0; } System.out.println(maxsum); }}这是C代码#include<stdio.h>int main(){ int k,current; int maxsum=0,thissum=0; scanf("%d",&k); for(int i=0;i<k;i++) { scanf("%d",¤t); thissum+=current; if(thissum>maxsum) maxsum=thissum; else if (thissum<0) thissum=0; } printf("%d\n",maxsum );}结果题目是01-1是我的 为什么差别这么大 java还是内存超了 求游戏特技代码 java利用windows api控制麦克风音量?? 请帮我找出代码中的错误(用java编的选择题小程序) 关于java.sql.ResultSet的操作??? 求救!!! 新手JTextField问题 如何在applet里边绘图而不用默认的paint(Graphics g)方法 Map 用法 ftp上传 一個菜鳥問題,10分就到手 equals复写 equals复写
public static int maxsubsum(int[] seq)
{
int maxsum=-9999;
int thissum=0;
//遍历所有子序列(包括包含单个数的子序列)
for(int i=0;i<seq.length;i++)
for(int j=i;j<seq.length;j++)
{
//计算每个子序列的和值,记录这些和值里的最大值以及开始结束位置
for(int k=i;k<=j;k++)
thissum += seq[k];
if(thissum >= maxsum)
{
maxsum = thissum;
start = i;
end = j;
}
}
}你的子序列没遍历完,而且以0为界是什么意思呢
这个还涉及到多个相同最大值和值子序列的情况没考虑
如果要考虑的话需要将start,end设计为数组或则Map
个人意见,仅供参考
{
int maxsum=-9999;
int thissum=0;
//遍历所有子序列(包括包含单个数的子序列)
for(int i=0;i<seq.length;i++)
for(int j=i;j<seq.length;j++)
{
//计算每个子序列的和值,记录这些和值里的最大值以及开始结束位置
for(int k=i;k<=j;k++)
{ thissum += seq[k];
if(thissum >= maxsum)
{
maxsum = thissum;
start = i;
end = j;
}
//重置thissum
thissum =0;
}
}
return maxsum; }
上网本没法测试,尝试着写,呵呵
这是java代码import java.util.Scanner;public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int k=in.nextInt();
int maxsum=0;
int thissum=0;
int current=0;
for(int i=0;i<k;i++)
{
current=in.nextInt();
thissum+=current;
if (thissum>maxsum)
maxsum=thissum;
else if (thissum<0)
thissum=0;
}
System.out.println(maxsum);
}
}
这是C代码
#include<stdio.h>
int main()
{
int k,current;
int maxsum=0,thissum=0;
scanf("%d",&k);
for(int i=0;i<k;i++)
{
scanf("%d",¤t);
thissum+=current;
if(thissum>maxsum)
maxsum=thissum;
else if (thissum<0)
thissum=0;
}
printf("%d\n",maxsum );
}结果题目是01-1是我的 为什么差别这么大 java还是内存超了