我关于 MSS 问题的代码是在数组大小大于整数的最大值时给出运行时错误(非零退出代码) ,尽管我已经使用 2D 数组解决了数组大小 bu 的问题,但仍然出现错误。代码在我的系统上运行良好。我无法弄清楚问题所在。你能?
import java.io.*;
import java.util.*;
import java.lang.*;
class A{
public static long max_sum_subarray_neg(long[] A,int n) //when all -ve elements
{
long ans=Long.MIN_VALUE;
for(int i=0;i<n;i++)
{
if(A[i]>ans)
ans=A[i];
}
return(ans);
}
public static long max_sum_subarray(long[][] A,int n,int k) // for atleast one +ve element
{
long sum=0,ans=0;
for(int i=0;i<k;i++)
for(int j=0;j<n;j++)
{
if(sum + A[i][j]>0)
sum+=A[i][j];
else sum=0;
ans= Math.max(ans,sum);
}
return ans;
}
public static void main(String args[]) throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int t=Integer.parseInt(br.readLine());
while(t-->0)
{
StringTokenizer s=new StringTokenizer(br.readLine());
int n= Integer.parseInt(s.nextToken());
int k= Integer.parseInt(s.nextToken());
s=new StringTokenizer(br.readLine());
int i,j,neg=0;
long B[]=new long[n]; //given array
long A[][]=new long[k][n]; //array on which MSS has to be done after cpying value from given array k times
for(i=0;i<n;i++)
{
B[i]=Long.parseLong(s.nextToken());
if(B[i]<0)
neg++;
}
long ans;
if(neg==n)
ans=max_sum_subarray_neg(B,n);
else
{
for(i=0;i<k;i++) //copying given array elements k times
for(j=0;j<n;j++)
A[i][j]=B[j];
ans=max_sum_subarray(A,n,k);
}
System.out.println(ans);
}
}
}